Antworten:
Ohne die in der Antwort von @ Shawn Melton angegebenen Punkte zu berücksichtigen, gibt es eine bestimmte undokumentierte gespeicherte Prozedur, die dies tut. Es ist xp_servicecontrol
. Hiermit können Sie den Dienststatus des SQL Server-Agentendienstes in TSQL starten, stoppen und überprüfen.
Wenn Sie den Status "Ausführen / Stoppen" des SQL Server-Agentendienstes starten, stoppen oder anzeigen möchten, lautet die Syntax:
EXEC xp_servicecontrol N'Querystate|Start|Stop',N'Service Name'
Wenn Sie den SQLServer Agent Service über TSQL starten möchten, lautet die Syntax wie folgt:
So starten Sie den SQL Server-Agenten
EXEC xp_servicecontrol N'START',N'SQLServerAGENT';
GO
So stoppen Sie den SQL Server-Agenten
EXEC xp_servicecontrol N'STOP',N'SQLServerAGENT';
GO
Wenn Sie den Dienststatus des SQL Server-Agent-Dienstes anzeigen möchten, lautet die Syntax wie folgt:
EXEC xp_servicecontrol N'querystate',N'SQLServerAGENT';
Go
Nach dem Starten des SQL Server-Agentendienstes wird eine solche Meldung angezeigt
Service gestartet
Meldung 22003, Ebene 1, Status 0
Nach dem Beenden des SQL Server-Agentendienstes wird eine solche Meldung angezeigt
Service gestoppt
Meldung 22003, Ebene 1, Status 0
Hinweis : - xp_servicecontrol
ist eine undokumentierte gespeicherte Systemprozedur, daher erhalten Sie keine Unterstützung dafür und es besteht außerdem die Möglichkeit von Codeänderungen oder Parameteränderungen. Beachten Sie dies, wenn Sie sich für die Verwendung dieser Prozedur entscheiden.
Dies hängt davon ab, welche Version von PowerShell Sie ausführen. Dieser Befehl kann jedoch ab Version 3.0 verwendet werden:
Set-Service SQLSERVERAGENT -StartupType Disabled
Die Alternative wäre die Verwendung von WMI, oder Sie können SQL Server WMI (microsoft.sqlserver.management.smo.wmi-Namespace) verwenden.
In T-SQL gibt es keinen nativen Mechanismus, mit dem Sie mit den Diensten interagieren können. Außer nur xp_cmdshell
PowerShell- oder cmd-Befehle verwenden und aufrufen.
net stop
in cmd, nicht wahr?