【发布时间】:2013-01-29 04:07:45
【问题描述】:
我想创建一个 SQL 表来存储/捕获特定数据库的用户访问或活动。
例如,每次用户登录服务器并查询特定数据库时,表中都会包含用户名、访问/查询的数据库、活动时间等条目。
我知道我会在某个地方查找 .txt 日志文件 - 但有没有更简单的方法可以自动完成?
我该怎么做呢?
提前致谢!
【问题讨论】:
标签: sql database sql-server-2008 monitoring logfiles
我想创建一个 SQL 表来存储/捕获特定数据库的用户访问或活动。
例如,每次用户登录服务器并查询特定数据库时,表中都会包含用户名、访问/查询的数据库、活动时间等条目。
我知道我会在某个地方查找 .txt 日志文件 - 但有没有更简单的方法可以自动完成?
我该怎么做呢?
提前致谢!
【问题讨论】:
标签: sql database sql-server-2008 monitoring logfiles
您可以在 SQL Server 错误日志中捕获登录活动(为“失败和成功登录”打开登录审核):
USE [master];
GO
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'AuditLevel',
REG_DWORD,
3;
或者通过创建一个LOGON TRIGGER 并使用它来记录到一个特定的表。
但是,由于 SELECT 语句上没有触发器,因此捕获所有查询将需要相当侵入性的方法,例如 server-side trace 或 SQL Server Audit。
【讨论】:
阅读 SQL Server 中的 Logon Triggers
【讨论】: