SQL Server 有连接历史记录吗?

SQL Server 有连接历史记录吗?

有没有办法找到在我的 SQL Server (2000) 或它的某个数据库的生命周期内连接到它的工作站列表?即使几个星期也足以满足我的目的。

某处是否存在日志文件,或者我必须打开它吗?

答案1

首先需要启用连接审核,默认情况下未启用。在企业管理器中,右键单击服务器实例并选择属性。然后在“安全”选项卡上设置“审核级别”选项。启用后,SQL Server 会将连接信息记录到 SQL Server 日志中。启用审核后,您还可以通过 SQL Server Profiler 跟踪查看连接信息。

显然,请记住,服务器实例必须可达才能引发连接事件。

如果您的服务器没有审核连接尝试,那么您将不得不恢复从 Windows 事件日志中拼凑信息。

通读一下SQL Server 2000 审计在 Technet 上。

答案2

您可以探索以下视图:

 select * from sys.dm_exec_sessions 
 select * from sys.dm_exec_connections

它们从服务器启动时起就保持连接,并在服务器重启时被清除

答案3

我使用以下脚本来记录连接,但连接数增长非常快。我建议进一步过滤:

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

相关内容