web-dev-qa-db-de.com

So überprüfen Sie, ob der SQL Server-Agent ausgeführt wird

Ich verwende SQL Server 2008 r2. Ich möchte einen Weg finden, um zu überprüfen, ob der SQL Server-Agent ausgeführt wird. Ich bin misstrauisch, dass der Agent nicht ausgeführt wird, aber ich weiß nicht, wie ich das überprüfen soll.

10
qinking126

In Management Studio können Sie überprüfen, ob der SQL Server-Agent ausgeführt wird, indem Sie den SQL Server-Agent-Knoten im Objekt-Explorer anzeigen. Im folgenden Screenshot wird der SQL Server-Agent auf meiner SQL Server 2012-Instanz ausgeführt (grüner Pfeil über dem SQL Server-Agentensymbol), der Agent für SQL Server 2000 wird jedoch gestoppt (rotes x).

enter image description here

Sie können auch in der Systemsteuerung> Verwaltung> Dienste Folgendes überprüfen:

enter image description here

Oder in Programme> SQL Server> Konfigurationstools> Configuration Manager:

enter image description here

Abschließend können Sie den Status mit T-SQL überprüfen:

DECLARE @agent NVARCHAR(512);

SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')), 
  N'SQLServerAgent');

EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;
25
Aaron Bertrand

Wenn der SQL Server-Agent ausgeführt wird, wird in der rechten unteren Ecke des SQL Server-Agentensymbols in SQL Server Management Studio eine grüne Wiedergabeschaltfläche angezeigt.

Führen Sie den folgenden Codeausschnitt aus, um den Status des SQL Server-Agenten für eine bestimmte Instanz mithilfe von T-SQL zu überprüfen:

IF EXISTS (  SELECT 1 
             FROM master.dbo.sysprocesses 
             WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
    SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'
END
ELSE 
BEGIN
    SELECT @@SERVERNAME AS 'InstanceName', 0 AS 'SQLServerAgentRunning'
END

Quelle = Colin Stasiuk

6
John Sansom

Die schnellste, einfachste und direkteste Methode, um festzustellen, ob SQL Agent ausgeführt wird, und dies kann in SSMS problemlos durchgeführt werden, ist eine Abfrage (daher kann sie automatisiert werden). und fragen kein veraltetes System ab table (dh sysprocesses) oder EXECing xp_servicecontrol ist eine DMV, die in SP1 für SQL Server 2008 R2 eingeführt wurde:

sys.dm_server_services

SELECT dss.[status], dss.[status_desc]
FROM   sys.dm_server_services dss
WHERE  dss.[servicename] LIKE N'SQL Server Agent (%';

Kehrt zurück:

status  status_desc
4       Running

Es ist nur die Server-Berechtigung VIEW SERVER STATE erforderlich, aber Sie haben diese bereits benötigt, um den Status im Objekt-Explorer (in SSMS) anzuzeigen.

UND, wenn Sie einem bestimmten Login keinen VIEW SERVER STATE gewähren möchten, weil dadurch zu viele andere Informationen abgerufen werden können, müssen Sie technisch überhaupt nichts gewähren, zumindest nicht einem tatsächlichen Benutzer. Siehe meine Antwort auf DBA.StackExchange zu einer ähnlichen Frage für Details (einschließlich eines Arbeitsbeispiels):

Welche Mindestberechtigungen muss ich einem Benutzer erteilen, damit er den Status des SQL Server-Agentendiensts überprüfen kann?

4
Solomon Rutzky
IF EXISTS (SELECT 1 FROM sysprocesses WHERE LEFT(program_name, 8) = 'SQLAgent')
  PRINT 'Agent is running!'
ELSE
  PRINT 'Agent is not connected!';

Lassen Sie mich wissen, ob dies funktioniert

IF EXISTS (  SELECT 1 

           FROM master.dbo.sysprocesses 

           WHERE program_name = N'SQLAgent - Generic Refresher')

BEGIN

   SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'

END

ELSE 

BEGIN

   SELECT @@SERVERNAME AS 'InstanceName', 0 AS 'SQLServerAgentRunning'

END

Referenz: http://benchmarkitconsulting.com/colin-stasiuk/2009/07/20/check-sql-server-agent-status-on-all-sql-servers/

3
NG.

Automatisieren Sie die Überprüfung, ob der SQL Server-Agent mit dieser Batchdatei ausgeführt wird.

Der Dienst wird gestartet, wenn er noch nicht ausgeführt wird.

Sie müssen den Dienstnamen (SQLServerAgent) für einige Versionen von MSSQL anpassen.

echo off
echo Test SQL Server Agent Service

for /F "tokens=3 delims=: " %%H in ('sc query "SQLServerAgent" ^| findstr "STATE"') do (
  if /I "%%H" NEQ "RUNNING" (
   echo service was stopped, starting service
     rem put your optional errorlog or warning message here
     net start "SQLServerAgent"
  )
)
2
Jens Frandsen

Das benutze ich in Powershell

Get-Service | Where-Object -like -value '*sql*agent*' -Property 'name'

0
chrisevett