Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

KILL (Transact-SQL)

Arrête un processus utilisateur basé sur l'ID de session ou sur l'unité de travail (UOW). Si l'ID de session ou l'UOW spécifié implique l'annulation de nombreuses tâches, l'instruction KILL peut mettre du temps à être exécutée, notamment en cas de restauration d'une longue 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é. L'instruction peut également servir à mettre fin à des transactions distribuées orphelines et incertaines lorsque le Coordinateur de transactions distribuées Microsoft est utilisé.

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle, Base de données SQL Windows Azure (version initiale jusqu'à la version actuelle).

Icône Lien de rubrique Conventions de syntaxe Transact-SQL

KILL { session ID | UOW } [ WITH STATUSONLY ] 

session ID

ID de session du processus à interrompre. session ID est un entier unique (int) affecté à chaque connexion utilisateur lors de l'établissement de la connexion. La valeur de l'ID de session est liée à la connexion pendant la durée de la connexion. Lorsque la connexion se termine, la valeur entière est libérée et peut être réaffectée à une nouvelle connexion.

Utilisez KILL session ID pour interrompre les transactions non distribuées et distribuées normales associées à un ID de session spécifié.

UOW

S'applique à : SQL Server 2008 et SQL Server 2014.

Identifie l'ID de l'UOW (Unit of Work) des transactions distribuées. 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 peut également être obtenu à partir du journal des erreurs ou par le biais du moniteur MS DTC. Pour plus d'informations sur la surveillance des transactions distribuées, reportez-vous à la documentation de MS DTC.

Utilisez KILL UOW pour arrêter les transactions distribuées orphelines. Ces transactions ne sont associées à aucun ID de session réel mais artificiellement associées à l'ID de session = « -2 ». Cet ID de session facilite l'identification des transactions orphelines en interrogeant 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.

WITH STATUSONLY

Génère un rapport de progression sur un session ID ou UOW spécifié qui est restauré en raison d'une instruction KILL préalable. KILL WITH STATUSONLY n'interrompt ni n'achève l'session ID ou l'UOW ; la commande affiche uniquement la progression actuelle de la restauration.

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. Il n'est pas possible de mettre fin aux processus système et aux processus exécutant une procédure stockée étendue.

Utilisez l'instruction KILL avec précaution, particulièrement lorsque des processus risqués sont en cours d'exécution. Vous ne pouvez pas arrêter votre propre processus. Les autres processus à ne pas arrêter sont les suivants :

  • AWAITING COMMAND

  • CHECKPOINT SLEEP

  • LAZY WRITER

  • LOCK MONITOR

  • SIGNAL HANDLER

Utilisez @@SPID pour afficher la valeur d'ID de la session en cours d'utilisation.

Pour obtenir un rapport de valeurs d'ID de session actives, 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. Vous pouvez également visualiser la colonne SPID envoyée par la procédure stockée système sp_who. Si une restauration est en cours pour un SPID spécifique, la colonne cmd associée à celui-ci dans le jeu de résultats sp_who indique 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.

La commande KILL permet de résoudre des transactions distribuées incertaines. 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. 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).

Utilisation de WITH STATUSONLY

KILL WITH STATUSONLY ne génère un rapport que si l'ID de session ou l'UOW est en cours de restauration en raison d'une instruction KILL session ID | UOW antérieure. 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 :

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 de l'UOW était achevée au moment de l'exécution de l'instruction KILL session ID | UOW WITH STATUSONLY, ou qu'aucun ID de session ou aucune UOW n'est en cours de restauration, KILL session ID| UOW WITH STATUSONLY renvoie l'erreur suivante :

"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 même rapport d'état peut être obtenu en répétant la même instruction KILL session ID | UOW sans utiliser l'option WITH STATUSONLY ; toutefois, ceci n'est pas recommandé. La répétition d'une instruction KILL session ID peut mettre fin à un nouveau processus si la restauration a été achevée et si l'ID de session a été réaffecté à une nouvelle tâche avant l'exécution de la nouvelle instruction KILL. Ceci peut être évité en spécifiant WITH STATUSONLY.

Nécessite l'autorisation ALTER ANY CONNECTION. ALTER ANY CONNECTION est incluse avec appartenance au rôle serveur fixe sysadmin ou processadmin.

A.Utilisation de KILL pour arrêter une session

L'exemple suivant indique comment arrêter l'ID de session 53.

KILL 53;
GO

B.Utilisation de l'instruction KILL ID de session WITH STATUSONLY pour obtenir un rapport de progression

L'exemple suivant génère un état sur le processus de restauration d'un ID de session spécifique.

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.Utilisation de KILL pour arrêter une transaction distribuée orpheline

L'exemple suivant indique comment arrêter une transaction distribuée orpheline (ID de session = -2) avec une UOW de D5499C66-E398-45CA-BF7E-DC9C194B48CF.

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

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft