web-dev-qa-db-ja.com

SQL Server 2005のデータベースへの接続の詳細なリストを取得するにはどうすればよいですか?

SQL Server 2005のデータベースへの接続の詳細なリストを取得するにはどうすればよいですか?

19
x2.

システムストアドプロシージャを使用するsp_who2

29
Brian Ball

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:sp_who2のフィルター出力 から調整)

15
Hutch

@Hutchが指摘したように、sp_who2の主な制限の1つは、パラメーターを受け取らないため、デフォルトではソートまたはフィルターできないことです。 結果を一時テーブルに保存する ができますが、その後、事前にすべての型を宣言する必要があります(そしてDROP TABLE)。

代わりに、master.dbo.sysprocessesのソースに直接移動できます

sp_who2句とWHERE句を簡単に追加して意味のある出力を取得できることを除いて、ORDER BYが生成するものとほぼ同じものを出力するようにこれを構築しました。

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 
10
KyleMit

誰がアクティブですか? :もあります

アクティブなのは誰ですか? SQL Server 2005および2008の動的管理ビュー(DMV)に基づく包括的なサーバーアクティビティストアドプロシージャです。多量のアナボリックステロイドのsp_who2と考えてください

5
Mitch Wheat