sp_stop_job (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

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

Transact-SQL-Syntaxkonventionen

Syntax

sp_stop_job
    [ [ @job_name = ] N'job_name' ]
    [ , [ @job_id = ] 'job_id' ]
    [ , [ @originating_server = ] N'originating_server' ]
    [ , [ @server_name = ] N'server_name' ]
[ ; ]

Argumente

[ @job_name = ] N'job_name'

Der Name des Auftrags, der beendet werden soll. @job_name ist "sysname" mit der Standardeinstellung "NULL.

[ @job_id = ] 'job_id'

Die ID des Auftrags, der beendet werden soll. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL.

[ @originating_server = ] N'originating_server'

Der Name des ursprünglichen Servers. Wenn angegeben, werden alle Multiserveraufträge beendet. @originating_server ist "sysname" mit der Standardeinstellung "NULL. Geben Sie diesen Parameter nur beim Aufrufen sp_stop_job eines Zielservers an.

Das Multi Server Administration (MSX/TSX)-Feature wird in Azure SQL verwaltete Instanz nicht unterstützt.

Hinweis

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

[ @server_name = ] N'server_name'

Der Name des Zielservers, auf dem ein Multiserverauftrag beendet werden soll. @server_name ist "sysname" mit einem Standardwert von NULL. Geben Sie diesen Parameter nur beim Aufrufen sp_stop_job eines ursprungsenden Servers für einen Multiserverauftrag an.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Keine.

Hinweise

sp_stop_job sendet ein Stoppsignal an die Datenbank. Einige Prozesse können sofort beendet werden und einige müssen einen stabilen Punkt (oder einen Einstiegspunkt zum Codepfad) erreichen, bevor sie beendet werden können. Einige lange ausgeführte Transact-SQL-Anweisungen wie BACKUP, RESTOREund einige DBCC Befehle können lange dauern. Wenn diese Befehle ausgeführt werden, kann es eine Weile dauern, bis der Auftrag abgebrochen wird. Der Abbruch eines Auftrags führt dazu, dass ein entsprechender Eintrag im Auftragsverlauf aufgezeichnet wird.

Wenn ein Auftrag zurzeit einen Schritt vom Typ CmdExec oder PowerShell ausführt, wird der auszuführende Prozess (z. B. MyProgram.exe) vorzeitig beendet. Ein vorzeitiger Abbruch kann unvorhersehbare Folgen haben, z. B. dass Dateien, die von dem Prozess verwendet wurden, geöffnet bleiben. Daher sollte nur unter extremen Umständen verwendet werden, sp_stop_job wenn der Auftrag Schritte vom Typ "CmdExec " oder "PowerShell" enthält.

Diese gespeicherte Prozedur teilt den Namen sp_stop_job mit einem ähnlichen Objekt für den Azure Elastic Jobs-Dienst für Azure SQL-Datenbank. Informationen zur Version der elastischen Aufträge finden Sie unter jobs.sp_stop_job (Azure Elastic Jobs) (Transact-SQL).

Berechtigungen

Diese gespeicherte Prozedur gehört der db_owner Rolle. Sie können berechtigungen für jeden Benutzer erteilen EXECUTE , diese Berechtigungen können jedoch während eines SQL Server-Upgrades außer Kraft gesetzt werden.

Anderen Benutzern muss eine der folgenden SQL Server-Agent festen Datenbankrollen in der msdb Datenbank gewährt 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 Aufträge beenden, die sie besitzen. Mitglieder von SQLAgentOperatorRole können alle lokalen Aufträge beenden, einschließlich Aufträgen, die anderen Benutzern gehören. Mitglieder von sysadmin können alle lokalen und multiserver-Aufträ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