SQL Server Kill Spid

SQL Server Kill Spid
L'ID de processus SPID ou SQL Server est une valeur unique attribuée à une session lors de la connexion à une instance SQL Server. Par exemple, si vous utilisez un outil tel que JetBrains Data Grip pour vous connecter au serveur SQL, le serveur SQL attribue un ID de session unique qui contient un espace mémoire et une portée autonomes. Cela signifie que l'épid ne peut pas interagir avec d'autres Spids sur le serveur.

SQL Server utilise des valeurs SPID inférieures à 50 pour les processus de serveur interne, tandis que toute valeur Spid au-dessus de 51 (inclusive) est attribuée aux processus utilisateur.

Dans ce guide, vous comprendrez comment obtenir des valeurs Spid dans SQL Server et comment tuer une transaction en utilisant son SPID.

SQL Server Show Spid

Dans SQL Server, il existe différentes façons d'obtenir l'épid des processus en cours d'exécution. Ce guide examinera les plus courants et les plus faciles à utiliser.

sp_who (transact-sql)

Le sp_who est une procédure d'assistance qui vous permet d'afficher les informations de l'utilisateur, les sessions et les processus d'instance SQL Server. En utilisant cette procédure, vous pouvez filtrer pour des informations spécifiques, telles que le nom d'utilisateur et la valeur de Spid.

La syntaxe est comme indiqué:

sp_who [[@loginame =] 'Login' | ID de session | 'ACTIF' ]

La connexion fait référence au nom sysname qui identifie un processus pour une connexion spécifique.

L'ID de session est la valeur de SPID à un processus spécifique connecté au serveur SQL.

Exemple d'utilisation

Les commandes suivantes montrent comment utiliser la procédure sp_who dans SQL Server.

Afficher tous les processus actuels

Pour afficher tous les processus actuels, utilisez la requête comme indiqué:

Utilisez Master;
ALLER
Exec sp_who;
ALLER

La requête ci-dessus doit renvoyer les informations avec des colonnes telles que SPID, ECID, statut, connexion, et plus.

Afficher le processus pour un utilisateur spécifique

Pour obtenir les processus associés à un utilisateur spécifique, nous pouvons spécifier le nom d'utilisateur dans la requête comme indiqué dans l'exemple ci-dessous:

Utilisez Master;
ALLER
Exec sp_who 'csalem \ cs';
ALLER

La commande doit renvoyer les informations de processus sur la connexion définie. Un exemple de sortie est comme indiqué:

@@ Spid

Une autre méthode que vous pouvez utiliser pour obtenir l'épid d'un processus consiste à utiliser la fonction @@ spid. Cette fonction de configuration renvoie l'ID de session du processus actuel.

Exemple d'utilisation

L'exemple suivant montre comment utiliser le @@ SPID pour récupérer des informations sur un processus spécifique.

Sélectionnez @@ SPID comme 'ID',
System_User comme 'Login_name',
L'utilisateur comme «nom d'utilisateur»

La requête renvoie le nom de Spid, le nom de connexion et le nom d'utilisateur. L'exemple de sortie est comme indiqué:

Moniteur d'activité

Vous pouvez également utiliser une méthode graphique pour afficher la valeur de l'ID de session pour un processus spécifique. Lancez le studio de gestion MS SQL Server et cliquez avec le bouton droit sur l'instance SQL Server. Moniteur d'activité ouverte.

Cliquez sur l'onglet Processus pour afficher Spid, Connexion, Bases de données et plus d'informations. Les informations affichées par le moniteur d'activité sont indiquées:

SQL Server Kill Spid

Parfois, vous pouvez rencontrer une instance spécifique en cours d'exécution lente, bloquant d'autres processus ou consommer des ressources système. Vous pouvez mettre fin au processus en utilisant son épid.

La commande Kill Spid vous permet de spécifier une valeur spécifique de l'utilisateur et de terminer le processus. Une fois que vous aurez appelé la commande, SQL Server exécutera un processus Rollback (UNO change); peut donc prendre un certain temps pour mettre fin à un processus étendu.

Ce qui suit montre la syntaxe de la commande Kill Spid:

Kill Session ID [avec StatusOnly] | Uow [avec statutonly | COMMISSER | RETOUR EN ARRIERE ]

Exemple d'utilisation

Passez la valeur de l'ID de session pour utiliser la commande Kill Spid (Apprenez à obtenir la valeur de Spid ci-dessus).

Tuer 90;

La commande ci-dessus doit arrêter le processus spécifié.

Pour obtenir la progression de la terminaison du processus, vous pouvez utiliser l'argument avec statistique comme indiqué:

Tuez 84 avec statutrément;

La commande ci-dessus doit renvoyer les progrès comme:

MSG 6120, niveau 16, état 1, ligne 1
Le rapport d'état ne peut pas être obtenu. L'opération en arrière pour l'ID de processus 84 n'est pas en cours.

L'exemple ci-dessous vous montre comment terminer une sauvegarde de la base de données en cours d'exécution à l'aide de la commande Kill Spid.

Démarrez la sauvegarde comme:

Base de données de sauvegarde [WideworldImporters]
À disque = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL15.MssqlServer \ mssql \ backup \ wwi_backup.bak '
Avec nofORMAT, name = n '\ wwi_backup', compression, statts = 10;
ALLER

À l'aide de la commande Kill Spid, terminez le processus de sauvegarde.

Conclusion

Dans cet article, vous avez appris à travailler avec les ID de session SQL Server. Diverses méthodes pour récupérer la valeur de SPID et mettre fin à un processus en utilisant la valeur de Spid.