回答

28

使用系統存儲過程sp_who2

4

還有who is active?

是誰主動?是基於SQL Server 2005和2008 動態管理視圖(DMV)的基於 的服務器活動存儲過程的綜合 。想到這 上的 合成代謝類固醇

13

sp_who2大幅劑量sp_who2實際上將提供對數據庫服務器,不是數據庫連接的列表。要查看單個數據庫(YourDatabaseName在這個例子中)的連接,可以使用

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' 

(從SQL Server: Filter output of sp_who2改編。)

+0

謝謝,有時我只需要列出連接到單個數據庫而不是整個實例。 – systech 2017-02-14 21:52:52

8

由於@Hutch指出,的sp_who2的主要限制之一是它不會接受任何參數,因此默認情況下您無法對其進行排序或過濾。您可以save the results into a temp table,但那麼您必須提前申報所有類型(並記住DROP TABLE)。

相反,你可以直接去源master.dbo.sysprocesses

我已經構造這個輸出幾乎一模一樣的東西,sp_who2產生,但您可以輕鬆地添加ORDER BYWHERE條款得到有意義的輸出。

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

因爲[sys.sysprocesses](https://msdn.microsoft.com/zh-cn/library/default.asp),所以應該考慮使用[sys.dm_exec_sessions](https://msdn.microsoft.com/zh-cn/library/ms176013.aspx) us/library/ms179881.aspx)已棄用。 – Stoinov 2015-05-04 10:04:19

相關問題