有没有办法找到在我的 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