sys.fn_get_audit_file (Transact-SQL)
從 SQL Server 伺服器稽核建立的稽核檔案中傳回資訊。 如需詳細資訊,請參閱<SQL Server Audit (Database Engine)>。
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
語法
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)>。
|
|
user_defined_information |
nvarchar(4000) |
用來記錄使用者想要利用 sp_audit_write 預存程序記錄在稽核記錄中的任何額外資訊。
|
備註
如果傳遞給 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)