Чтобы узнать имена процессов, которые подключаются к серверу БД в 2000/2005, вам нужно будет запускать задание, вероятно, каждые 30 секунд или даже чаще. Эта работа должна будет сохранить результаты во временной таблице, а затем добавить новые имена процессов и базы данных, и, возможно, логины. Вот начало:
Создать таблицу для накопления информации:
create table DBUsage_accumulate (
[id] int identity(1,1) NOT NULL,
[LoginName] SYSNAME NOT NULL,
HostName SYSNAME NOT NULL,
DBName SYSNAME NOT NULL,
CONSTRAINT PK_DBUSAGE_ACCUMULATE PRIMARY KEY CLUSTERED (id asc));
Тогда вам нужно иметь уникальное ограничение для этой таблицы, используйте индекс:
CREATE UNIQUE NONCLUSTERED INDEX
IX_ACCUMULATE_LOGIN_DB_HOST
on DBUsage_Accumulate
(
LoginName asc
,HostName asc
,DBName asc
);
и теперь вам нужно периодически запускать проверку sp_who2:
CREATE TABLE #temp_sp_who2
(
SPID INT,
Status VARCHAR(1000) NULL,
[LoginName] SYSNAME NULL,
HostName SYSNAME NULL,
BlkBy SYSNAME NULL,
DBName SYSNAME NULL,
Command VARCHAR(1000) NULL,
CPUTime INT NULL,
DiskIO INT NULL,
LastBatch VARCHAR(1000) NULL,
ProgramName VARCHAR(1000) NULL,
SPID2 INT
--,RequestID INT NULL --comment out for SQL 2000 databases
)
INSERT INTO #temp_sp_who2
EXEC sp_who2;
CREATE TABLE #temp_sp_who2
(
SPID INT,
Status VARCHAR(1000) NULL,
[LoginName] SYSNAME NULL,
HostName SYSNAME NULL,
BlkBy SYSNAME NULL,
DBName SYSNAME NULL,
Command VARCHAR(1000) NULL,
CPUTime INT NULL,
DiskIO INT NULL,
LastBatch VARCHAR(1000) NULL,
ProgramName VARCHAR(1000) NULL,
SPID2 INT
--,RequestID INT NULL --comment out for SQL 2000 databases
)
INSERT INTO #temp_sp_who2
EXEC sp_who2;
delete from #temp_sp_who2
where exists (
select 1 from DBUsage_accumulate A
where A.LoginName = #temp_sp_who2.Loginname
and A.HostName = #temp_sp_who2.hostName
and A.DBName = #temp_sp_who2.dbname);
insert into DBUsage_accumulate(LoginName,HostName,DBName)
select
distinct
LoginName
,HostName
,dbname
from #temp_sp_who2
where [DBName] is not null
and [HostName] != ' .';
Помещение последнего фрагмента SQL в задание, которое выполняется каждые 5-30 секунд, приведет к созданию списка всех имен хостов, имен БД и имен входа. Это можно использовать для переноса правильных баз данных и имен входа, а также для изменения строк подключения на клиентских компьютерах.
Проверено в 2000 году.