Назад | Перейти на главную страницу

Есть ли история подключений для SQL Server?

Есть ли способ найти список рабочих станций, которые были подключены к моему 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