Jak uzyskać szczegółową listę połączeń do bazy danych w serwerze sql 2005?Jak uzyskać szczegółową listę połączeń do bazy danych w serwerze sql 2005?
Odpowiedz
Użyj systemowej procedury przechowywanej sp_who2
.
Istnieje również who is active?:
Kto jest aktywny? to kompleksowa procedura przechowywana na serwerze z działaniem przechowywanym na serwerze w SQL Server 2005 i 2008 widokach zarządzania dynamicznego (DMV). Pomyśl o tym, jak sp_who2 na sporej dozy sterydów anabolicznych
sp_who2 rzeczywiście dostarczyć listę połączeń do serwera bazy, a nie bazie. Aby wyświetlić połączenia w jednej bazie danych (YourDatabaseName w tym przykładzie), można użyć
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'
(Adaptacja SQL Server: Filter output of sp_who2).
Jak @Hutch podkreślił, jednym z głównych ograniczeń sp_who2
to chodzi nie przyjmuje żadnych parametrów, więc nie można go domyślnie sortować ani filtrować. Możesz save the results into a temp table, ale wtedy musisz zadeklarować wszystkie typy z wyprzedzeniem (i pamiętaj o DROP TABLE
).
Zamiast tego, można po prostu przejść bezpośrednio do źródła na master.dbo.sysprocesses
mam zbudowany to wyjście prawie dokładnie to samo, co sp_who2
generuje, oprócz tego, że można łatwo dodać ORDER BY
i WHERE
klauzule, aby uzyskać sensowne wyjście .
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
Należy rozważyć użycie [sys.dm_exec_sessions] (https://msdn.microsoft.com/en-us/library/ms176013.aspx) od [sys.sysprocesses] (https://msdn.microsoft.com/en- us/library/ms179881.aspx) jest przestarzałe. – Stoinov
Dzięki, czasami wystarczy wyświetlić listę połączeń do pojedynczej bazy danych zamiast do całej instancji. – systech