我想创建一个SQL表来存储/捕获特定数据库的用户访问权限或活动。
例如,每次用户登录服务器并查询特定数据库时,都有一个用户名,数据库访问/查询,活动时间等条目的表。
我知道我会查找某个.txt日志文件 - 但是有更简单的方法可以自动执行吗?
我将如何做到这一点?
提前致谢!
答案 0 :(得分:2)
您可以在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。
答案 1 :(得分:1)
阅读SQL Server中的Logon Triggers