[SQL Server] Afficher la liste des utilisateurs connectés à une base de données

-- =============================================

-- Author: Zouhaier KHARROUBI

-- Create date: 10/05/206

-- Description: Afficher la liste des utilisateurs connectés à une base de données

-- Exemple d'utilisateion : EXEC usp_UtilsateuresConnectes 'Ma_Base'

-- =============================================

CREATE PROCEDURE [dbo].[usp_UtilsateuresConnectes]

(

@Nom_Base VARCHAR(45)=NULL

)

AS

BEGIN

SET NOCOUNT ON

DECLARE @Nbre_Utilisateurs INT

IF @Nom_Base is null

      BEGIN

         SELECT @Nom_Base=db_name()

      END

ELSE

   IF NOT EXISTS(SELECT name FROM master..sysdatabases WHERE name = @Nom_Base)

     BEGIN

            SELECT 'La base de données ' + @Nom_Base + ' n''existe pas sur le serveur SQL '+@@servername  

     END

SELECT @Nom_Base 'Base de données'

--Récupérer le nombre des utilisateurs connectés

SELECT @Nbre_Utilisateurs=COUNT(spid) FROM master..sysprocesses WHERE dbid = db_id(@Nom_Base) AND status <> 'background'

IF @Nbre_Utilisateurs = 0

   BEGIN

   SELECT 'Cette base est actuellement inutilisée'

   END

ELSE

   BEGIN

         --Afficher la liste des utilisateurs

         SELECT CAST(@Nbre_Utilisateurs AS VARCHAR(4)) + ' utilisateurs(s) connectés à la base ' + @Nom_Base + ' du serveur ' + @@servername

         SELECT spid, nt_username Utilisateur , cmd, program_name Programme FROM master..sysprocesses

         WHERE dbid = db_id(@Nom_Base) AND status <> 'background'

     

         --Afficher l'information si je suis connecté à la base

         IF EXISTS(SELECT * FROM master..sysprocesses WHERE spid=@@spid AND dbid=db_id(@Nom_Base))

            BEGIN

                  SELECT 'Vous êtes actuellement connecté sur la base ' + @Nom_Base + ' du serveur ' + @@servername

            END

   END

END