> Tech > Etape n° 2 : Exécution de KickUserOut.sql

Etape n° 2 : Exécution de KickUserOut.sql

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Le script KickUserOut.sql illustré sur le listing 1 démontre comment utiliser un script T-SQL pour déconnecter un utilisateur d’une base de données. Il commence par déclarer les variables et définir leurs valeurs. Les variables du bloc A sont parmi les plus importantes. @LoginName spécifie le nom de connexion de l’utilisateur

Etape n° 2 : Exécution de KickUserOut.sql

à déconnecter de la base de données spécifiée dans la variable @DatabaseName. Dans notre exemple, l’utilisateur et la base de données sont respectivement sa et master. Vous devez personnaliser ces variables avec les noms de connexion et de base de données obtenus à l’étape 1.

Vous pouvez également personnaliser deux autres variables : @NumberOfTimesToLoop et @TimeToCheckKillIn Sec. La première spécifie le nombre maximal de boucles à effectuer par le script pour vérifier si un processus a été arrêté. La valeur de cette variable peut être n’importe quel entier positif. La deuxième spécifie la durée d’attente maximale en secondes entre deux vérifications. La valeur se situe dans une plage entre 1 et 599 secondes.

Après avoir déclaré et défini ces variables, KickUser Out.sql crée une table temporaire nommée #utbSPWHO2. Celleci contient les résultats de la procédure stockée sp_who2, laquelle est disponible dans SQL Server versions 2000 et 2005, et récupère des données pertinentes de la table sysprocesses. Pour en savoir plus sur sp_who2 et son utilisation de sysprocesses, vous pouvez exécuter la commande EXEC sp_helptext ‘sp_who2’ sur la base de données master.

Il est important de noter que si le serveur comporte plusieurs processeurs, SQL Server peut choisir d’utiliser le parallélisme pour exécuter une instruction utilisateur. Dans ce cas, plusieurs sous-threads avec le même SPID sont retournés par sp_who2. Cette procédure stockée ne retourne pas l’ID unique de chaque sous-thread. Vous pouvez néanmoins le trouver dans la colonne ecid de la table sysprocesses. Sinon, la procédure stockée sp_who, qui est une version plus ancienne de sp_who2, renvoie cette valeur. Vous trouverez cette ancienne mouture dans SQL Server 2005 et SQL Server 2000. Le bloc B présente le code servant à créer la table #utbSPWHO2 et son index ordonné en clusters.

Cette table contient les colonnes suivantes :
• SPID – contient le SPID de chaque processus.
• [Status] – indique le statut (par ex., Runnable, Sleeping, Background, Rollback) de chaque processus.
• LoginName – fournit le nom de connexion de l’utilisateur qui a démarré chaque processus.
• HostName – contient le nom du poste de travail à partir duquel chaque processus est lancé (par ex., nom de l’ordinateur client).
• BlockedBy – inclut des informations sur toute activité de blocage concernant les threads et processus du serveur.
• DBName – contient le nom de la base de données accédée par chaque utilisateur.
• Command – fournit des informations sur l’instruction SQL exécutant sp_who2.
• CPUTime – propose des informations sur le processeur du serveur.
• DiskIO – contient des détails sur les E/S disque du serveur.
• LastBatchRunTime – donne la date et l’heure de la connexion de chaque utilisateur.
• ProgramName – contient le nom du programme qui a démarré chaque processus (notez que ce nom peut ne pas être disponible car il dépend de l’application de l’utilisateur).
• SPID2 – contient les mêmes informations que la colonne SPID.
• RequestID – fournit l’identifiant de la requête s’exécutant dans SQL Server (cf. la vue de gestion dynamique sys.dm_ exec.requests pour en savoir plus sur cet identifiant).

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010