War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
KILL (Transact-SQL)

KILL (Transact-SQL)

Beendet einen Benutzerprozess basierend auf der Sitzungs-ID (SPID in SQL Server 2000 oder früher) oder Arbeitseinheit (Unit of Work, UOW). Falls für die angegebene Sitzungs-ID oder UOW viele Vorgänge rückgängig gemacht werden müssen, kann die KILL-Anweisung einige Zeit in Anspruch nehmen, besonders wenn dabei ein Rollback für eine lange Transaktion ausgeführt wird.

In SQL Server 2000 und höheren Versionen kann KILL verwendet werden, um eine normale Verbindung zu beenden, wodurch die der angegebenen Sitzungs-ID zugeordneten Transaktionen intern beendet werden. Die Anweisung kann auch verwendet werden, um verwaiste und unsichere verteilte Transaktionen zu beenden, wenn Microsoft Distributed Transaction Coordinator (MS DTC) verwendet wird.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen


KILL { session ID | UOW } [ WITH STATUSONLY ] 

session ID

Die Sitzungs-ID des zu beendenden Prozesses. session ID ist eine eindeutige ganze Zahl (int), die jeder Benutzerverbindung beim Herstellen der Verbindung zugewiesen wird. Der Sitzungs-ID-Wert ist für die Dauer der Verbindung an die Verbindung gebunden. Beim Beenden der Verbindung wird der ganzzahlige Wert freigegeben und kann einer neuen Verbindung zugewiesen werden.

Verwenden Sie KILL session ID, um reguläre verteilte und nicht verteilte Transaktionen zu beenden, die einer bestimmten Sitzungs-ID zugeordnet sind.

UOW

Identifiziert die Arbeitseinheits-ID (Unit of Work, UOW) verteilter Transaktionen. UOW ist ein GUID, der aus der request_owner_guid-Spalte der dynamischen Verwaltungssicht sys.dm_tran_locks abgerufen werden kann. UOW kann auch aus dem Fehlerprotokoll oder über den MS DTC-Monitor ermittelt werden. Weitere Informationen zum Überwachen von verteilten Transaktionen finden Sie in der MS DTC-Dokumentation.

Verwenden Sie KILL UOW zum Beenden verwaister verteilter Transaktionen. Diese Transaktionen sind keiner echten Sitzungs-ID, sondern künstlich der Sitzungs-ID = '-2' zugeordnet. Diese Sitzungs-ID ermöglicht das Identifizieren verwaister Transaktionen, indem die Sitzungs-ID-Spalte in den dynamischen Verwaltungssichten sys.dm_tran_locks, sys.dm_exec_sessions oder sys.dm_exec_requests abgefragt wird.

WITH STATUSONLY

Generiert einen Fortschrittsbericht für einen angegebenen session ID- oder UOW-Wert, für den aufgrund einer früheren KILL-Anweisung ein Rollback ausgeführt wird. Durch KILL WITH STATUSONLY wird der durch session ID oder UOW angegebene Prozess weder beendet noch wird ein Rollback ausgeführt. Es wird lediglich der aktuelle Fortschritt des Rollbacks angezeigt.

KILL wird üblicherweise zum Beenden von Prozessen verwendet, die andere wichtige Prozesse mit Sperren blockieren, oder von Prozessen, die Abfragen ausführen, die dringend benötigte Systemressourcen belegen. Systemprozesse und Prozesse, die eine erweiterte gespeicherte Prozedur ausführen, können nicht beendet werden.

Verwenden Sie KILL sehr sorgfältig, besonders wenn kritische Prozesse ausgeführt werden. Ihren eigenen Prozess können Sie nicht beenden. Auch die folgenden Prozesse sollten Sie nicht beenden:

  • AWAITING COMMAND

  • CHECKPOINT SLEEP

  • LAZY WRITER

  • LOCK MONITOR

  • SIGNAL HANDLER

Mit @@SPID kann der Sitzungs-ID-Wert der aktuellen Sitzung angezeigt werden.

Sie können die session_id-Spalte der dynamischen Verwaltungssichten sys.dm_tran_locks, sys.dm_exec_sessions und sys.dm_exec_requests abfragen, um einen Bericht über die aktiven Sitzungs-ID-Werte zu erhalten. Sie können auch die SPID-Spalte anzeigen, die von der gespeicherten Systemprozedur sp_who zurückgegeben wird. Wenn für einen bestimmten SPID-Wert ein Rollback ausgeführt wird, enthält die cmd-Spalte im sp_who-Resultset für diesen SPID-Wert den Eintrag KILLED/ROLLBACK.

Wenn eine bestimmte Verbindung eine Datenbankressource sperrt und den Fortschritt einer anderen Transaktion blockiert, wird die Sitzungs-ID der blockierenden Verbindung in der blocking_session_id-Spalte von sys.dm_exec_requests oder der von sp_who zurückgegebenen blk-Spalte angezeigt.

Der KILL-Befehl kann zum Auflösen von unsicheren verteilten Transaktionen verwendet werden. Bei diesen Transaktionen handelt es sich um nicht aufgelöste verteilte Transaktionen, die aufgrund unplanmäßiger Neustarts des Datenbankservers oder von MS DTC (Microsoft Distributed Transaction Coordinator) auftreten. Weitere Informationen zu unsicheren Transaktionen finden Sie im Abschnitt zum Zweiphasencommit in Verwenden markierter Transaktionen (vollständiges Wiederherstellungsmodell).

Verwenden von WITH STATUSONLY

KILL WITH STATUSONLY generiert nur dann einen Bericht, wenn aufgrund einer früheren KILL session ID|UOW-Anweisung derzeit ein Rollback für die Sitzungs-ID oder UOW ausgeführt wird. Der Fortschrittsbericht enthält den Prozentsatz, zu dem der Rollbackvorgang abgeschlossen ist, und die geschätzte Dauer der verbleibenden Zeit (in Sekunden) in folgender Form:

Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds

Ist das Rollback der Sitzungs-ID oder UOW zum Zeitpunkt der Ausführung der KILL session ID|UOW WITH STATUSONLY-Anweisung bereits abgeschlossen oder wird kein Rollback für die Sitzungs-ID oder UOW ausgeführt, gibt KILL session ID|UOW WITH STATUSONLY folgende Fehlermeldung zurück:

"Meldung 6120, Ebene 16, Status 1, Zeile 1"

"Der Statusbericht kann nicht abgerufen werden. Der Rollbackvorgang für die Prozess-ID <session ID> wird zurzeit nicht ausgeführt."

Der gleiche Statusbericht wird durch Wiederholen der gleichen KILL session ID|UOW-Anweisung ohne die WITH STATUSONLY-Option erstellt. Dies wird allerdings nicht empfohlen. Durch das Wiederholen einer KILL session ID-Anweisung wird möglicherweise ein neuer Prozess beendet, falls das Rollback bereits abgeschlossen war und die Sitzungs-ID vor der Ausführung der neuen KILL-Anweisung einem neuen Task zugewiesen worden ist. Mit der Angabe von WITH STATUSONLY wird dies verhindert.

Erfordert die ALTER ANY CONNECTION-Berechtigung. ALTER ANY CONNECTION ist mit der Mitgliedschaft in den festen Serverrollen sysadmin und processadmin verbunden.

A. Verwenden von KILL zum Beenden einer Sitzung

Im folgenden Beispiel wird gezeigt, wie die Sitzungs-ID 53 beendet wird.

KILL 53;
GO

B. Verwenden von KILL Sitzungs-ID WITH STATUSONLY zum Anzeigen eines Fortschrittsberichts

Im folgenden Beispiel wird ein Statusbericht für den Rollbackvorgang der angegebenen Sitzungs-ID generiert.

KILL 54;
KILL 54 WITH STATUSONLY;
GO

--This is the progress report.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.

C. Verwenden von KILL zum Beenden einer verwaisten verteilten Transaktion

Im folgenden Beispiel wird gezeigt, wie eine verwaiste verteilte Transaktion (Sitzungs-ID = -2) mit dem UOW-Wert D5499C66-E398-45CA-BF7E-DC9C194B48CF beendet wird.

KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF';

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft