Как получить подробный список подключений к базе данных в sql server 2005?
Как получить подробный список подключений к базе данных в sql server 2005?
4 ответов
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
это то, что он не принимает никаких параметров, поэтому вы не можете сортировать или фильтровать его по умолчанию. Ты можешь!--8-->сохранить результаты в таблицу temp, но тогда вы должны объявить все типы досрочно (и не забудьте 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
есть еще кто активный?:
кто активный? это комплексная хранимая процедура на основе активности сервера на SQL Server 2005 и 2008 динамические административные представления (DMV). Думать это sp_who2 на изрядную дозу анаболические стероиды