首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 審計 SELECT 語句:T-SQL 實戰指南

     編輯:關於SqlServer

SQL Server 2008 將審計功能提升為一級伺服器物件,甚至能審計 SELECT 查詢——這在舊版本中需倚賴 SQL 追蹤或第三方工具。雖然圖形介面適合初學與小規模任務,但重複操作顯得繁瑣。本文透過 T-SQL 指令完整示範如何建立審計,並以檔案系統儲存審計記錄,適用於需審計多張資料表的情境。

建立伺服器審計物件

首先在 master 資料庫建立伺服器層級的審計物件,指定輸出路徑:

USE master;
CREATE SERVER AUDIT testAudit TO FILE (FILEPATH = 'C:\TempSelectAudit');
GO

此物件負責蒐集伺服器/資料庫層級的動作與動作群組,屬實例級別。若單一伺服器運行多個實例,每個實例皆需建立獨立審計物件。

建立資料庫審計規格

在目標資料庫(範例使用 AdventureWorks)建立審計規格,關聯上述伺服器審計,並新增審計動作——針對 HumanResources.Employee 資料表的 SELECT 操作,由 Public 角色執行:

USE AdventureWorks;
GO
CREATE DATABASE AUDIT SPECIFICATION testAudSpec
FOR SERVER AUDIT testAudit
ADD (SELECT ON HumanResources.Employee BY Public);
GO

可依需求新增多個動作/動作群組,亦可建立伺服器審計規格以審計登入失敗、角色變更等伺服器層級事件。完整動作清單請參閱線上叢書或 MSDN。

啟用審計物件

預設新建的審計物件與規格均為停用狀態,需手動啟用。可查詢系統檢視確認狀態(is_state_enabled = 1 表示啟用):

USE master;
SELECT is_state_enabled, * FROM sys.server_file_audits;
USE AdventureWorks;
SELECT is_state_enabled, * FROM sys.database_audit_specifications;
GO

啟用指令:

USE master;
ALTER SERVER AUDIT testAudit WITH (STATE = ON);
GO
USE AdventureWorks;
ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE = ON);
GO

讀取審計記錄

透過 fn_get_audit_file 函數讀取審計檔案。因檔名含時間戳記,使用萬用字元 * 讀取目錄下所有審計檔:

SELECT session_server_principal_name, statement, *
FROM fn_get_audit_file ('C:\TempSelectAudit\*', NULL, NULL);

若已知確切檔名路徑,亦可指定單一檔案讀取。

審計物件狀態查詢結果

審計記錄查詢結果

圖:審計記錄查詢結果示例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved