sp_stop_job (Transact-SQL)
Gilt für: SQL Server Azure 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
, RESTORE
und 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).
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