Comment obtenir la liste détaillée des connexions à la base de données dans SQL Server 2005?
Utilisez la procédure stockée système sp_who2
.
sp_who2 fournira en fait une liste de connexions pour le serveur de base de données , pas une base de données . Pour afficher les connexions d'une seule base de données (YourDatabaseName dans cet exemple), vous pouvez utiliser
DECLARE @AllConnections TABLE(
SPID INT,
Status VARCHAR(MAX),
LOGIN VARCHAR(MAX),
HostName VARCHAR(MAX),
BlkBy VARCHAR(MAX),
DBName VARCHAR(MAX),
Command VARCHAR(MAX),
CPUTime INT,
DiskIO INT,
LastBatch VARCHAR(MAX),
ProgramName VARCHAR(MAX),
SPID_1 INT,
REQUESTID INT
)
INSERT INTO @AllConnections EXEC sp_who2
SELECT * FROM @AllConnections WHERE DBName = 'YourDatabaseName'
(Adapté de SQL Server: Filtrez la sortie de sp_who2 .)
Comme l'a souligné @Hutch, l'une des principales limites de sp_who2
est qu'il ne prend aucun paramètre, vous ne pouvez donc pas le trier ou le filtrer par défaut. Vous pouvez enregistrer les résultats dans une table temporaire , mais ensuite vous devez déclarer tous les types à l'avance ( et n'oubliez pas de DROP TABLE
).
Au lieu de cela, vous pouvez simplement aller directement à la source sur master.dbo.sysprocesses
J'ai construit cela pour produire presque exactement la même chose que sp_who2
génère, sauf que vous pouvez facilement ajouter ORDER BY
et WHERE
clauses pour obtenir une sortie significative.
SELECT spid,
sp.[status],
loginame [Login],
hostname,
blocked BlkBy,
sd.name DBName,
cmd Command,
cpu CPUTime,
physical_io DiskIO,
last_batch LastBatch,
[program_name] ProgramName
FROM master.dbo.sysprocesses sp
JOIN master.dbo.sysdatabases sd ON sp.dbid = sd.dbid
ORDER BY spid
Il y a aussi qui est actif? :
Qui est actif? est une procédure stockée complète d'activité de serveur basée sur les vues de gestion dynamique (DMV) SQL Server 2005 et 2008. Pensez-y comme sp_who2 sur une forte dose de stéroïdes anabolisants