共用方式為


sys.fn_get_audit_file (Transact-SQL)

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

適用於:SQL Server (SQL Server 2008 至目前版本)。

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

語法

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

引數

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

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

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

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

    注意

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

  • initial_file_name
    指定稽核檔案集合中要開始讀取稽核記錄之特定檔案的路徑和名稱。 型別為 nvarchar(260)。

    注意

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

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

    注意

    audit_record_offset 引數必須包含有效的項目,或者必須包含預設值或 NULL 值。型別為 bitint。

傳回的資料表

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

資料行名稱

型別

說明

event_time

datetime2

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

sequence_number

int

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

action_id

varchar(4)

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

succeeded

bit

1 = 成功

0 = 失敗

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

permission_bitmask

varbinary(16)

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

is_column_permission

bit

1 = true

0 = false

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

session_id

smallint

事件發生所在之工作階段的識別碼。 不可為 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

varchar(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

sysname

稽核發生所在的伺服器執行個體名稱。 使用標準的 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 形式傳回。 少量的可稽核動作有包含這類資訊。

針對具有相關聯 TSQL 堆疊的動作,以 XML 格式顯示 TSQL 堆疊的單一層級。 此 XML 格式為:

<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

Frame nest_level 表示框架的目前巢狀層級。 模組名稱會以三部分格式表示 (database_name、schema_name 和 object_name)。 系統將剖析模組名稱以逸出無效的 Xml 字元,例如 '<'、'>'、'/' 和 '_x'。 這些字元將逸出為 _xHHHH_。 HHHH 代表字元的四位數十六進位 UCS-2 碼。

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

file_name

varchar(260)

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

audit_file_offset

bigint

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

user_defined_event_id

smallint

使用者定義的事件識別碼會當做引數傳遞給 sp_audit_write。 如果是系統事件則為 NULL (預設值),使用者定義的事件則為非零值。 如需詳細資訊,請參閱<sp_audit_write (Transact-SQL)>。

適用於:SQL Server 2012 至 SQL Server 2014。

user_defined_information

nvarchar(4000)

用來記錄使用者想要利用 sp_audit_write 預存程序記錄在稽核記錄中的任何額外資訊。

適用於:SQL Server 2012 至 SQL Server 2014。

備註

如果傳遞給 fn_get_audit_file 的 file_pattern 引數參考不存在的路徑或檔案,或是此檔案不是稽核檔案,則會傳回 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 (Database Engine)>。

請參閱

參考

CREATE SERVER AUDIT (Transact-SQL)

ALTER SERVER AUDIT (Transact-SQL)

DROP SERVER AUDIT (Transact-SQL)

CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)

ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)

DROP SERVER AUDIT SPECIFICATION (Transact-SQL)

CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)

DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

sys.server_audits (Transact-SQL)

sys.server_file_audits (Transact-SQL)

sys.server_audit_specifications (Transact-SQL)

sys.server_audit_specification_details (Transact-SQL)

sys.database_audit_specifications (Transact-SQL)

sys.database_audit_specification_details (Transact-SQL)

sys.dm_server_audit_status (Transact-SQL)

sys.dm_audit_actions (Transact-SQL)

sys.dm_audit_class_type_map (Transact-SQL)

概念

建立伺服器稽核與伺服器稽核規格