我想创建一个 SQL 表来存储/捕获特定数据库的用户访问或活动。
例如,每次用户登录服务器并查询特定数据库时,该表都会包含用户名、访问/查询的数据库、活动时间等条目。
我知道我会在某个地方查找 .txt 日志文件 - 但有没有更简单的自动执行方法?
我该怎么做呢?
提前致谢!
我想创建一个 SQL 表来存储/捕获特定数据库的用户访问或活动。
例如,每次用户登录服务器并查询特定数据库时,该表都会包含用户名、访问/查询的数据库、活动时间等条目。
我知道我会在某个地方查找 .txt 日志文件 - 但有没有更简单的自动执行方法?
我该怎么做呢?
提前致谢!
您可以在 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
,因此捕获所有查询将需要非常侵入性的方法,例如服务器端跟踪或SQL Server 审计。
阅读SQL Server 中的登录触发器