Share via


fn_get_audit_file (Transact-SQL)

從伺服器稽核建立的稽核檔案中傳回資訊。如需詳細資訊,請參閱<了解 SQL Server Audit>。

主題連結圖示Transact-SQL 語法慣例

語法

fn_get_audit_file ( file_pattern, {default | initial_file_name | NULL }, {default | audit_file_offset | NULL } )

引數

  • file_pattern
    針對要讀取的稽核檔案集合指定目錄或路徑及檔案名稱。這個引數必須同時包含路徑 (磁碟機代號或網路共用位置) 以及可包含萬用字元的檔案名稱。可使用單一星號 (*) 來從稽核檔案集合中收集多個檔案。例如:

    • <path>\* - 收集指定之位置內的所有稽核檔案。

    • <path>\LoginsAudit_{GUID} - 收集具有指定之名稱和 GUID 配對的所有稽核檔案。

    • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit - 收集指定的稽核檔案。

    [!附註]

    如果傳遞路徑而沒有包含檔案名稱模式,則會產生錯誤。

  • initial_file_name
    指定稽核檔案集合中要開始讀取稽核記錄之特定檔案的路徑和名稱。

    [!附註]

    initial_file_name 引數必須包含有效的項目,或者必須包含預設值或 NULL 值。

  • audit_file_offset
    指定包含為 initial_file_name 指定之檔案的已知位置。當使用這個引數時,此函數會開始讀取緩衝區內緊接在指定的位移之後的第一筆記錄。

    [!附註]

    audit_file_offset 引數必須包含有效的項目,或者必須包含預設值或 NULL 值。

傳回的資料表

下表描述這個函數可傳回的稽核檔案內容。

資料行名稱

類型

描述

event_time

datetime2

可稽核的動作引發時的日期和時間。不可為 Null。

sequence_number

int

追蹤單一稽核記錄中太長而無法納入稽核寫入緩衝區內的記錄序列。不可為 Null。

action_id

char(4)

動作的識別碼。不可為 Null。

succeeded

bit

1 = 成功

0 = 失敗

指示觸發此事件的動作是否成功。不可為 Null。若為登入事件以外的所有事件,這只會報告權限檢查成功或失敗,而不會報告作業成功或失敗。

permission_bitmask

bigint

在某些動作中,這就是已授與、拒絕或撤銷的權限。

is_column_permission

bit

1 = true

0 = false

指出這是否為資料行層級權限的旗標。不可為 Null。當 permission_bitmask = 0 時會傳回 0。

session_id

int

事件發生所在之工作階段的識別碼。不可為 Null。

server_principal_id

int

動作執行所在之登入環境的識別碼。不可為 Null。

database_principal_id

int

動作執行所在之資料庫使用者環境的識別碼。不可為 Null。如果不適用則傳回 0。例如,伺服器作業。

target_server_principal_id

int

GRANT/DENY/REVOKE 作業執行所在的伺服器主體。不可為 Null。如果不適用則傳回 0。

target_database_principal_id

int

GRANT/DENY/REVOKE 作業執行所在的資料庫主體。不可為 Null。如果不適用則傳回 0。

object_id

int

稽核發生所在之實體的識別碼。其中包含下列項目:

  • 伺服器物件

  • 資料庫

  • 資料庫物件

  • 結構描述物件

不可為 Null。如果此實體為伺服器本身或是稽核並未在物件層級上執行,則會傳回 0。例如驗證。

class_type

char(2)

稽核發生所在之可稽核的實體類型。不可為 Null。

session_server_principal_name

sysname

工作階段的伺服器主體。可設為 Null。

server_principal_name

sysname

目前的登入。可設為 Null。

server_principal_sid

varbinary

目前的登入 SID。可設為 Null。

database_principal_name

sysname

目前的使用者。可設為 Null。如果無法使用則傳回 NULL。

target_server_principal_name

sysname

動作的目標登入。可設為 Null。如果不適用則傳回 NULL。

target_server_principal_sid

varbinary

目標登入的 SID。可設為 Null。如果不適用則傳回 NULL。

target_database_principal_name

sysname

動作的目標使用者。可設為 Null。如果不適用則傳回 NULL。

server_instance_name

nvarchar(120)

稽核發生所在的伺服器執行個體名稱。使用標準的 server\instance 格式。

database_name

sysname

動作發生所在的資料庫環境。可設為 Null。如果是伺服器層級所發生的稽核,則會傳回 NULL。

schema_name

sysname

動作發生所在的結構描述環境。可設為 Null。如果是發生在結構描述外部的稽核,則傳回 NULL。

object_name

sysname

稽核發生所在之實體的名稱。其中包含下列項目:

  • 伺服器物件

  • 資料庫

  • 資料庫物件

  • 結構描述物件

可設為 Null。如果此實體為伺服器本身或是稽核並未在物件層級上執行,則會傳回 NULL。例如驗證。

statement

nvarchar(4000)

TSQL 陳述式 (如果存在的話)。可設為 Null。如果不適用則傳回 NULL。

additional_information

nvarchar(4000)

只套用到單一事件的唯一資訊會以 XML 形式傳回。少量的可稽核動作有包含這類資訊。

可設為 Null。當此事件未報告其他資訊時,則會傳回 NULL。

file_name

varchar(260)

記錄來自之稽核記錄檔的路徑和名稱。不可為 Null。

audit_file_offset

bigint

檔案中包含稽核記錄的緩衝區位移。不可為 Null。

備註

如果將 file_pattern 引數傳遞給參考不存在之路徑或檔案的 fn_get_audit_file,或是此檔案不是稽核檔案,則會傳回 MSG_INVALID_AUDIT_FILE 錯誤訊息。

權限

需要 CONTROL SERVER 權限。

範例

此範例會從名為 \\serverName\Audit\HIPPA_AUDIT.sqlaudit 的檔案進行讀取。

SELECT * FROM sys.fn_get_audit_file ('\\serverName\Audit\HIPPA_AUDIT.sqlaudit',default,default);
GO

如需有關如何建立稽核的完整範例,請參閱<了解 SQL Server Audit>。

請參閱

參考

概念