kum*_*mar 2 sql-server audit sql-server-2008-r2
我在 SQL Server 2008 R2 中启用了审计来监视 DML 和 DDL 操作。
有没有办法将 SQLAudit 文件加载到数据库?或者任何其他方法将审计详细信息直接自动加载到数据库?
以下过程对我们很有效。
我们将审计文件写入文件共享。我有一个专门用于处理这些审计文件的 Sql Server 实例。在这个 SQLAudit 实例上,我有一个每分钟运行一次并执行一个存储过程的作业。
存储过程:
sys.fn_get_audit_file
使用通配符处理暂存文件共享中的所有 SQLAudit 文件。这是存储过程。
CREATE PROCEDURE [dbo].[SqlAuditCaptureAuditLogs]
AS
BEGIN
SET XACT_ABORT ON
EXEC xp_cmdshell 'powershell.exe "Move-Item \\FBPISILON01.sfbcic.com\SQLAuditLogs-SC\*.sqlaudit \\FBPISILON01.sfbcic.com\SQLAuditLogs-SC\SQLAuditLogs_Staging -ErrorAction SilentlyContinue"'
,no_output
INSERT INTO SQLAUDIT.[dbo].[SQLAUDIT_HISTORY] (
event_time
,sequence_number
,action_id
,server_principal_name
,server_instance_name
,database_name
,schema_name
,object_name
,statement
)
SELECT event_time
,sequence_number
,action_id
,server_principal_name
,server_instance_name
,database_name
,schema_name
,object_name
,statement
FROM sys.fn_get_audit_file('\\FBPISILON01.sfbcic.com\SQLAuditLogs-SC\SQLAuditLogs_Staging\*.*', DEFAULT, DEFAULT)
WHERE server_principal_name NOT IN (
,'mfoperational'
,'mfreader'
,'aperioapplication'
,'aperioreader'
,'aperiosync'
,'aperiobuild'
,'DataFix'
,'mapinfo'
,'GeoSpatialUpdater'
,'sa'
,'ussql1'
,'usweb'
,'uswebs'
,'vmview'
,'dba-admin'
)
EXEC xp_cmdshell 'powershell.exe "Remove-Item \\FBPISILON01.sfbcic.com\SQLAuditLogs-SC\SQLAuditLogs_Staging\*.* -ErrorAction SilentlyContinue"'
,no_output
END
Run Code Online (Sandbox Code Playgroud)