SQL Server 2005のデータベースへの接続の詳細なリストを取得するにはどうすればよいですか?
システムストアドプロシージャを使用する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:sp_who2のフィルター出力 から調整)
@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
誰がアクティブですか? :もあります
アクティブなのは誰ですか? SQL Server 2005および2008の動的管理ビュー(DMV)に基づく包括的なサーバーアクティビティストアドプロシージャです。多量のアナボリックステロイドのsp_who2と考えてください