Как получить подробный список подключений к базе данных в SQL Server 2005?
Как получить подробный список подключений к базе данных в SQL Server 2005?
Ответ 1
Используйте хранимую процедуру системы sp_who2
.
Ответ 2
sp_who2 фактически предоставит список соединений для сервера базы данных, а не базы данных. Чтобы просмотреть соединения для одной базы данных (имя_данных в этом примере), вы можете использовать
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.)
Ответ 3
Как отметил @Hutch, одним из основных ограничений sp_who2
является то, что он не принимает никаких параметров, поэтому вы не можете сортировать или фильтровать его по умолчанию. Вы можете сохранить результаты в таблице 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
Ответ 4
Существует также кто активен?:
Кто активен? является всеобъемлющим основанная на хранимой процедуре активности сервера на SQL Server 2005 и 2008 динамические представления управления (DMV). Думать его как sp_who2 на здоровую дозу анаболические стероиды