sp_stop_job (Transact-SQL)
Weist den SQL Server-Agent an, die Ausführung des Auftrags zu beenden.
Transact-SQL-Syntaxkonventionen
Syntax
sp_stop_job
[@job_name =] 'job_name'
| [@job_id =] job_id
| [@originating_server =] 'master_server'
| [@server_name =] 'target_server'
Argumente
[ @job_name =] 'job_name'
Der Name des Auftrags, der beendet werden soll. job_name ist vom Datentyp sysname. Der Standardwert ist NULL.[ @job_id =] job_id
Die ID des Auftrags, der beendet werden soll. job_id ist vom Datentyp uniqueidentifier. Der Standardwert ist NULL.[ @originating_server =] 'master_server'
Der Name des Masterservers. Wenn angegeben, werden alle Multiserveraufträge beendet. master_server ist vom Datentyp nvarchar(128). Der Standardwert ist NULL. Geben Sie diesen Parameter nur an, wenn Sie sp_stop_job auf einem Zielserver aufrufen.Hinweis Es kann jeweils nur einer der ersten drei Parameter angegeben werden.
[ @server_name =] 'target_server'
Der Name des Zielservers, auf dem ein Multiserverauftrag beendet werden soll. target_server ist vom Datentyp nvarchar(128). Der Standardwert ist NULL. Geben Sie diesen Parameter nur an, wenn Sie sp_stop_job auf einem Masterserver für einen Multiserverauftrag aufrufen.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Keine
Hinweise
Wenn der SQL Server-Agent die Beendigungsbenachrichtigung empfängt, wartet er den Abschluss des aktuell bearbeiteten Auftragsschritts ab, bevor er die Abbruchanforderung bearbeitet. Bei einigen zeitaufwändigen Transact-SQL-Anweisungen, etwa BACKUP, RESTORE oder einigen DBCC-Befehlen, kann es längere Zeit dauern, bis sie abgeschlossen sind. Wenn diese Anweisungen ausgeführt werden, dauert es möglicherweise einige Zeit, bis der Auftrag abgebrochen wird. Der Abbruch eines Auftrags führt dazu, dass ein entsprechender Eintrag im Auftragsverlauf aufgezeichnet wird.
Wenn ein Auftrag aktuell einen Schritt des Typs CmdExec oder PowerShell ausführt, wird der ausgeführte Prozess (z. B. Programm.exe) vorzeitig beendet. Ein vorzeitiger Abbruch kann unvorhersehbare Folgen haben, z. B. dass Dateien, die von dem Prozess verwendet wurden, geöffnet bleiben. Deshalb sollte sp_stop_job nur in Ausnahmesituationen verwendet werden, falls der Auftrag Schritte des Typs CmdExec oder PowerShell enthält.
Berechtigungen
Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin diese gespeicherte Prozedur ausführen. Anderen Benutzern muss eine der folgenden festen Datenbankrollen des SQL Server-Agents in der msdb-Datenbank zugewiesen werden:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
Weitere Informationen zu den Berechtigungen dieser Rollen finden Sie unter Feste Datenbankrollen des SQL Server-Agents.
Mitglieder von SQLAgentUserRole und SQLAgentReaderRole können nur die Aufträge beenden, deren Besitzer sie sind. Mitglieder von SQLAgentOperatorRole können alle lokalen Aufträge einschließlich der Aufträge beenden, die sich im Besitz anderer Benutzer befinden. Mitglieder der sysadmin-Rolle können alle lokalen und Multiserveraufträge beenden.
Beispiele
Im folgenden Beispiel wird der Auftrag Weekly Sales Data Backup beendet.
USE msdb ;
GO
EXEC dbo.sp_stop_job
N'Weekly Sales Data Backup' ;
GO