Есть ли способ найти список рабочих станций, которые были подключены к моему SQL Server (2000) или к одной из его баз данных за время ее существования? Для моих целей подойдет даже пара недель.
Есть ли где-нибудь файл журнала или это то, что мне нужно включить?
Сначала вам нужно включить аудит соединений, который по умолчанию выключен. В Enterprise Manager щелкните правой кнопкой мыши экземпляр сервера и выберите свойства. Затем установите параметр «Уровень аудита» на вкладке «Безопасность». Если этот параметр включен, SQL Server будет записывать информацию о подключении в журнал SQL Server. Вы также можете просматривать информацию о подключении через трассировки SQL Server Profiler, когда аудит включен.
Имейте в виду, что, очевидно, экземпляр сервера должен быть доступен для возникновения событий подключения.
Если ваш сервер не проверяет попытки подключения, вам придется вернуться к сбору информации из журналов событий Windows.
Прочтите Аудит SQL Server 2000 на Технет.
Вы можете изучить следующие виды:
select * from sys.dm_exec_sessions
select * from sys.dm_exec_connections
они сохраняют соединения с момента запуска сервера и очищаются при перезапуске
Я использую следующий скрипт для регистрации подключений, но он создается очень быстро. Я рекомендую отфильтровать его дальше:
USE [master]
GO
CREATE TABLE [dbo].[_log_connections](
[session_id] [int] NULL,
[connect_time] [datetime] NOT NULL,
[net_transport] [nvarchar](40) NOT NULL,
[encrypt_option] [nvarchar](40) NOT NULL,
[auth_scheme] [nvarchar](40) NOT NULL,
[client_net_address] [nvarchar](48) NULL
) ON [PRIMARY]
GO
CREATE TRIGGER [tr_CheckLogin]
ON ALL SERVER
FOR LOGON
AS
BEGIN
INSERT INTO TestDb.dbo._log_connections
SELECT session_id, connect_time, net_transport, encrypt_option, auth_scheme, client_net_address
from sys.dm_exec_connections c
where c.session_id = @@SPID and @@SPID > 50
END