【发布时间】:2014-12-09 13:02:21
【问题描述】:
根据我在此处找到的各种响应和 Microsoft 的文档,我正在努力使用 SQL Server 2012 上的应用程序日志进行审核。作为测试,我在 Management Studio 中执行了以下脚本并报告成功。但是,当我故意登录失败时,我的操作系统日志中看不到任何记录。
USE master
GO
CREATE SERVER AUDIT AuditDataAccess TO APPLICATION_LOG
GO
CREATE SERVER AUDIT SPECIFICATION HIPPA_Audit_Specification
FOR SERVER AUDIT AuditDataAccess
ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON)
GO
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON)
GO
澄清:如果我将输出放到文件而不是操作系统日志中,它会起作用。如果我这样创建对象:
CREATE SERVER AUDIT AuditDataAccess TO FILE ( FILEPATH ='C:\SqlAudit\' )
GO
...它有效,我可以使用以下方法检索数据:
SELECT * FROM sys.fn_get_audit_file ('c:\SqlAudit\AuditDataAccess_*.sqlaudit',default,default);
GO
关于使用操作系统应用程序日志,我做错了什么?
编辑:如果没有,那我是不是找错地方了?我打开了 Windows 7 EventViewer 并查看了 Event Viewer (local)/Windows Logs 的每个子树。我还查看了事件查看器(本地)/应用程序和服务日志,但在空的“Microsoft-SQLServerDataTools”之外没有看到 SQL Server 条目。
【问题讨论】:
-
应该可以。作为简化,如果您指定 sqlaudit 文件的完整路径(而不是像现在这样的通配符)会发生什么?
-
通配符有效。我可能不清楚......文件工作。操作系统应用程序事件日志不会。
-
啊,我的错,我倒着读了。嗯,我刚刚对我的本地实例进行了测试。我在应用程序日志中收到 eventid = 33205 的事件。您什么也没得到?甚至没有一个用于审计开始?
-
检查sql server服务的用户是否有写入EventLog的权限
-
@Ben:不,我什么也没得到。我想我会在另一台机器上试试这个,看看它是否是特定于机器的。
标签: sql sql-server logging audit