KILL (Transact-SQL)KILL (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data Warehouse ouiParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Arrête un processus utilisateur basé sur l'ID de session ou sur l'unité de travail (UOW).Terminates a user process that is based on the session ID or unit of work (UOW). Si la session spécifiée, ID ou l’UOW a la quantité de travail à annuler, l’instruction KILL peut prendre du temps, en particulier quand il implique la restauration d’une transaction longue.If the specified session ID or UOW has much work to undo, the KILL statement may take some time to complete, particularly when it involves rolling back a long transaction.

KILL peut être utilisé pour mettre fin à une connexion normale, ce qui met fin en interne aux transactions associées à l'ID de session spécifié.KILL can be used to terminate a normal connection, which internally terminates the transactions that are associated with the specified session ID. L'instruction peut également servir à mettre fin à des transactions distribuées orphelines et incertaines lorsque le Coordinateur de transactions distribuées MicrosoftMicrosoft est utilisé.The statement can also be used to terminate orphaned and in-doubt distributed transactions when MicrosoftMicrosoft Distributed Transaction Coordinator (MS DTC) is in use.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- Syntax for SQL Server  

KILL { session ID | UOW } [ WITH STATUSONLY ]   
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

KILL 'session_id'  
[;]   

ArgumentsArguments

session IDsession ID
ID de session du processus à interrompre.Is the session ID of the process to terminate. ID de session est un entier unique (int) affecté à chaque connexion utilisateur lors de la connexion est établie.session ID is a unique integer (int) that is assigned to each user connection when the connection is made. La valeur de l'ID de session est liée à la connexion pendant la durée de la connexion.The session ID value is tied to the connection for the duration of the connection. Lorsque la connexion se termine, la valeur entière est libérée et peut être réaffectée à une nouvelle connexion.When the connection ends, the integer value is released and can be reassigned to a new connection.
La requête suivante peut vous aider à identifier le session_id que vous souhaitez supprimer :The following query can help you identify the session_id that you want to kill:

SELECT conn.session_id, host_name, program_name,
    nt_domain, login_name, connect_time, last_request_end_time 
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
   ON sess.session_id = conn.session_id;

UOWUOW
S’applique aux: ( SQL Server 2008SQL Server 2008 via SQL Server 2017SQL Server 2017Applies to: ( SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017

Identifie l'ID de l'UOW (Unit of Work) des transactions distribuées.Identifies the Unit of Work ID (UOW) of distributed transactions. UOW est un GUID qui peut être obtenu à partir de la colonne request_owner_guid de la vue de gestion dynamique sys.dm_tran_locks.UOW is a GUID that may be obtained from the request_owner_guid column of the sys.dm_tran_locks dynamic management view. UOW peut également être obtenu à partir du journal des erreurs ou par le biais du moniteur MS DTC.UOW also can be obtained from the error log or through the MS DTC monitor. Pour plus d'informations sur la surveillance des transactions distribuées, reportez-vous à la documentation de MS DTC.For more information about monitoring distributed transactions, see the MS DTC documentation.

Utilisez KILL UOW pour arrêter les transactions distribuées orphelines.Use KILL UOW to terminate orphaned distributed transactions. Ces transactions ne sont associées à aucun ID de session réel mais artificiellement associées à l'ID de session = « -2 ».These transactions are not associated with any real session ID, but instead are associated artificially with session ID = '-2'. Cet ID de session facilite l'identification des transactions orphelines par l'interrogation de la colonne d'ID de session dans les vues de gestion dynamique sys.dm_tran_locks, sys.dm_exec_sessions ou sys.dm_exec_requests.This session ID makes it easier to identify orphaned transactions by querying the session ID column in sys.dm_tran_locks, sys.dm_exec_sessions, or sys.dm_exec_requests dynamic management views.

WITH STATUSONLYWITH STATUSONLY
Génère un rapport de progression sur un ID de session ou UOW qui est en cours de restauration en raison d’une instruction KILL préalable.Generates a progress report about a specified session ID or UOW that is being rolled back due to an earlier KILL statement. KILL WITH STATUSONLY n’interrompt ni restaurer le ID de session ou UOW; la commande affiche uniquement la progression actuelle de la restauration.KILL WITH STATUSONLY does not terminate or roll back the session ID or UOW; the command only displays the current progress of the rollback.

NotesRemarks

KILL est habituellement utilisé pour arrêter un processus qui bloque d'autres processus importants ayant des verrous ou un processus exécutant une requête qui utilise des ressources système nécessaires.KILL is commonly used to terminate a process that is blocking other important processes with locks, or a process that is executing a query that is using necessary system resources. Il n'est pas possible de mettre fin aux processus système et aux processus exécutant une procédure stockée étendue.System processes and processes running an extended stored procedure cannot be terminated.

Utilisez KILL avec précaution, particulièrement lorsque les processus critiques sont en cours d’exécution.Use KILL carefully, especially when critical processes are running. Vous ne pouvez pas arrêter votre propre processus.You cannot kill your own process. D’autres processus, que vous ne devez pas kill sont les suivantes :Other processes you should not kill include the following:

  • AWAITING COMMANDAWAITING COMMAND
  • CHECKPOINT SLEEPCHECKPOINT SLEEP
  • LAZY WRITERLAZY WRITER
  • LOCK MONITORLOCK MONITOR
  • SIGNAL HANDLERSIGNAL HANDLER

Utilisez @@SPID pour afficher la valeur d’ID de session pour la session active.Use @@SPID to display the session ID value for the current session.

Pour obtenir un rapport des valeurs d'ID de session active, vous pouvez interroger la colonne session_id des vues de gestion dynamique sys.dm_tran_locks, sys.dm_exec_sessions et sys.dm_exec_requests.To obtain a report of active session ID values, you can query the session_id column of the sys.dm_tran_locks, sys.dm_exec_sessions, and sys.dm_exec_requests dynamic management views. Vous pouvez également visualiser la colonne SPID renvoyée par la procédure stockée système sp_who.You can also view the SPID column that is returned by the sp_who system stored procedure. Si une restauration est en cours d’exécution pour un SPID spécifique, la colonne cmd dans le résultat de sp_who définie pour que le SPID indique KILLED/ROLLBACK.If a rollback is in progress for a specific SPID, the cmd column in the sp_who result set for that SPID indicates KILLED/ROLLBACK.

Lorsqu'une connexion particulière possède un verrou sur une ressource de base de données et qu'elle bloque le déroulement d'une autre connexion, l'ID de session de la connexion bloquante apparaît dans la colonne blocking_session_id de sys.dm_exec_requests ou dans la colonne blk retournée par sp_who.When a particular connection has a lock on a database resource and blocks the progress of another connection, the session ID of the blocking connection shows up in the blocking_session_id column of sys.dm_exec_requests or the blk column returned by sp_who.

La commande KILL permet de résoudre des transactions distribuées incertaines.The KILL command can be used to resolve in-doubt distributed transactions. Ce sont des transactions distribuées non résolues dues à des démarrages non planifiés du serveur de base de données ou du coordinateur MS DTC.These transactions are unresolved distributed transactions that occur because of unplanned restarts of the database server or MS DTC coordinator. Pour plus d’informations sur les transactions incertaines, consultez la section « Validation à deux phases » dans utiliser les Transactions marquées pour récupérer des bases de données associées uniformément ( Mode de récupération complète ) .For more information about in-doubt transactions, see the "Two-Phase Commit" section in Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

Utilisation de WITH STATUSONLYUsing WITH STATUSONLY

KILL WITH STATUSONLY ne génère un rapport uniquement si l’ID de session ou l’UOW est actuellement en cours de restauration en raison d’une instruction KILL ID de session|UOW instruction.KILL WITH STATUSONLY generates a report only if the session ID or UOW is currently being rolled back because of a previous KILL session ID|UOW statement. Le rapport de progression indique la proportion d'annulation réalisée (en pourcentage) et le temps restant estimé (en secondes), sous la forme suivante :The progress report states the amount of rollback completed (in percent) and the estimated length of time left (in seconds), in the following form:

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

Si la restauration de l’ID de session ou l’UOW était achevée au moment le KILL ID de session|UOW instruction WITH STATUSONLY, ou si aucun ID de session ou aucune UOW est en cours de restauration, KILL ID de session|UOW WITH STATUSONLY renvoie l’erreur suivante :If the rollback of the session ID or UOW has finished when the KILL session ID|UOW WITH STATUSONLY statement is executed, or if no session ID or UOW is being rolled back, KILL session ID|UOW WITH STATUSONLY returns the following error:

"Msg 6120, Level 16, State 1, Line 1"  
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."

Le rapport d’état peut être obtenu en répétant la même instruction KILL ID de session|UOW instruction sans l’aide de l’option WITH STATUSONLY ; Toutefois, nous ne recommandons pas cette opération.The same status report can be obtained by repeating the same KILL session ID|UOW statement without using the WITH STATUSONLY option; however, we do not recommend doing this. Répéter un KILL ID de session instruction peut mettre fin à un nouveau processus si la restauration a été achevée et l’ID de session a été réaffecté à une nouvelle tâche avant l’exécution de la nouvelle instruction KILL.Repeating a KILL session ID statement might terminate a new process if the rollback had finished and the session ID was reassigned to a new task before the new KILL statement is run. Ceci peut être évité en spécifiant WITH STATUSONLY.Specifying WITH STATUSONLY prevents this from happening.

AutorisationsPermissions

SQL ServerSQL Server: Requiert l’autorisation ALTER ANY CONNECTION. SQL ServerSQL Server: Requires the ALTER ANY CONNECTION permission. ALTER ANY CONNECTION est incluse avec appartenance au rôle de serveur fixe sysadmin ou processadmin.ALTER ANY CONNECTION is included with membership in the sysadmin or processadmin fixed server roles.

Base de données SQLSQL Database: Requiert l’autorisation de supprimer la connexion de base de données. Base de données SQLSQL Database: Requires the KILL DATABASE CONNECTION permission. La connexion du principal au niveau du serveur a la connexion de base de données KILL.The server-level principal login has the KILL DATABASE CONNECTION.

ExemplesExamples

A.A. Utilisation de KILL pour arrêter une sessionUsing KILL to terminate a session

L'exemple suivant indique comment arrêter l'ID de session 53.The following example shows how to terminate session ID 53.

KILL 53;  
GO  

B.B. Utilisation de l'instruction KILL ID de session WITH STATUSONLY pour obtenir un rapport de progressionUsing KILL session ID WITH STATUSONLY to obtain a progress report

L'exemple suivant génère un état sur le processus de restauration d'un ID de session spécifique.The following example generates a status of the rollback process for the specific session ID.

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.C. Utilisation de KILL pour arrêter une transaction distribuée orphelineUsing KILL to terminate an orphaned distributed transaction

L’exemple suivant montre comment arrêter une transaction distribuée orpheline (ID de session = -2) avec un UOW de D5499C66-E398-45CA-BF7E-DC9C194B48CF.The following example shows how to terminate an orphaned distributed transaction (session ID = -2) with a UOW of D5499C66-E398-45CA-BF7E-DC9C194B48CF.

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

Voir aussiSee Also

KILL STATS JOB (Transact-SQL) KILL STATS JOB (Transact-SQL)
KILL QUERY NOTIFICATION SUBSCRIPTION ( Transact-SQL ) KILL QUERY NOTIFICATION SUBSCRIPTION (Transact-SQL)
Fonctions intégrées (Transact-SQL) Built-in Functions (Transact-SQL)
SHUTDOWN (Transact-SQL) SHUTDOWN (Transact-SQL)
@@SPID (Transact-SQL) @@SPID (Transact-SQL)
sys.dm_exec_requests (Transact-SQL) sys.dm_exec_requests (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL) sys.dm_exec_sessions (Transact-SQL)
sys.dm_tran_locks (Transact-SQL) sys.dm_tran_locks (Transact-SQL)
sp_lock (Transact-SQL) sp_lock (Transact-SQL)
sp_who (Transact-SQL)sp_who (Transact-SQL)