[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