fn_get_audit_file (Transact-SQL)
從伺服器稽核建立的稽核檔案中傳回資訊。如需詳細資訊,請參閱<了解 SQL Server Audit>。
語法
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>。
請參閱