x2.*_*x2. 19 database sql-server database-connection connection-pooling sql-server-2005
如何获取sql server 2005中数据库连接的详细列表?
Hut*_*tch 15
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'
Run Code Online (Sandbox Code Playgroud)
(改编自SQL Server:sp_who2的过滤输出.)
Kyl*_*Mit 10
正如@Hutch指出的那样,其中一个主要限制sp_who2
是它不带任何参数,所以默认情况下你不能对它进行排序或过滤.您可以将结果保存到临时表中,但是您必须提前声明所有类型(并记住DROP TABLE
).
相反,你可以直接进入源代码 master.dbo.sysprocesses
我构造它来输出几乎完全相同的sp_who2
生成,除了你可以轻松添加ORDER BY
和WHERE
子句来获得有意义的输出.
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
Run Code Online (Sandbox Code Playgroud)