Odpowiedz

28

Użyj systemowej procedury przechowywanej sp_who2.

4

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

13

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).

+0

Dzięki, czasami wystarczy wyświetlić listę połączeń do pojedynczej bazy danych zamiast do całej instancji. – systech

8

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 
+1

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

Powiązane problemy