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