Freigeben über


sp_stop_job (Transact-SQL)

Weist den SQL Server-Agent an, die Ausführung des Auftrags zu beenden.

Themenlink (Symbol)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 ein Wert vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @job_id =] job_id
    Die ID des Auftrags, der beendet werden soll. job_id ist ein Wert vom Datentyp uniqueidentifier. Der Standardwert ist NULL.

  • [ @originating_server =] 'master_server'
    Der Name des Masterservers. Wenn dieses Argument angegeben wird, werden alle Multiserveraufträge beendet. master_server ist ein Wert vom Datentyp nvarchar(128). Der Standardwert ist NULL. Geben Sie diesen Parameter nur an, wenn Sie sp_stop_job auf einem Zielserver aufrufen.

    HinweisHinweis

    Es kann jeweils nur einer der ersten drei Parameter angegeben werden.

  • [ @server_name =] 'target_server'
    Der Name eines bestimmten Zielservers, auf dem ein Multiserverauftrag beendet werden soll. target_server ist ein Wert 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. Andere Benutzer müssen Mitglieder der festen SQL Server-Agent-Datenbankrollen in der msdb-Datenbank sein:

  • 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