sys.fn_get_audit_file (Transact-SQL)

適用対象:yesAzure Synapse Analytics Azure SQL Managed Instance Azure SQL Database YesSQL Server yes(サポートされているすべてのバージョン) Yes

SQL Serverのサーバー監査によって作成された監査ファイルから情報を返します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。

Topic link iconTransact-SQL 構文表記規則

構文

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

引数

file_pattern
読み取り対象に設定する監査ファイルのディレクトリまたはパスとファイル名を指定します。 型は nvarchar(260) です

  • SQL Server:

    この引数には、パス (ドライブ文字またはネットワーク共有) とファイル名の両方を含める必要があります。ファイル名にはワイルドカードを使用できます。 1 つのアスタリスク (*) を使用すると、監査ファイル セットから複数のファイルを収集することができます。 次に例を示します。

    • <path>\* - 指定した場所にあるすべての監査ファイルを収集します。

    • <path>\LoginsAudit_{GUID}* - 指定した名前と GUID のペアを持つすべての監査ファイルを収集します。

    • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit - 特定の監査ファイルを収集します。

  • Azure SQL Database:

    この引数は、BLOB URL (ストレージ エンドポイントとコンテナーを含む) を指定するために使用されます。 アスタリスク ワイルドカードはサポートされていませんが、部分ファイル (BLOB) 名プレフィックス (完全な BLOB 名ではなく) を使用して、このプレフィックスで始まる複数のファイル (BLOB) を収集できます。 次に例を示します。

    • <>Storage_endpoint/<Container>/<ServerName>/<DatabaseName>/ - 特定のデータベースのすべての監査ファイル (BLOB) を収集します。

    • <>Storage_endpoint/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName.xel> - 特定の監査ファイル (BLOB) を収集します。

注意

ファイル名のパターンがないパスを渡すとエラーが発生します。

initial_file_name
監査レコードの読み取りを開始する監査ファイル セット内の特定のファイルのパスと名前を指定します。 型は nvarchar(260) です

注意

initial_file_name引数には有効なエントリが含まれているか、既定の|を含む必要がありますNULL 値。

audit_record_offset
initial_file_nameに指定されたファイルを含む既知の場所を指定します。 この引数を使用した場合、関数は、指定されたオフセットの直後にあるバッファーの最初のレコードから読み取りを開始します。

注意

audit_record_offset引数には有効なエントリが含まれているか、既定の|を含む必要がありますNULL 値。 型は bigint です

返されるテーブル

次の表に、この関数から返される監査ファイルの内容を示します。

列名 Type 説明
action_id varchar (4) アクションの ID。 NULL 値は許可されません。
additional_information nvarchar (4000) 単一のイベントに対してだけ適用される固有の情報が XML として返されます。 少数の監査可能なアクションには、この種の情報が含まれています。

TSQL スタックが関連付けられているアクションについては、1 レベルの TSQL スタックが XML 形式で表示されます。 XML 形式は次のようになります。

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

frame nest_level は、フレームの現在の入れ子レベルを示します。 モジュール名は、3 つの部分形式 (database_name、schema_name、object_name) で表されます。 モジュール名が解析され、無効な xml 文字 (例: '\<', '>', ) '/''_x'がエスケープされます。 彼らはとして _xHHHH\_エスケープされます. HHHH は、文字の 4 桁の 16 進数 UCS-2 コードを表します。

NULL 値が許可されます。 イベントから追加情報が報告されない場合は NULL を返します。
affected_rows bigint 適用対象: Azure SQL Databaseのみ

実行されたステートメントの影響を受ける行の数。
application_name nvarchar(128) 適用対象: Azure SQL Database + SQL Server (2017 以降)

監査イベントの原因となったステートメントを実行したクライアント アプリケーションの名前
audit_file_offset bigint 適用対象: SQL Serverのみ

監査レコードを含むファイル内のバッファー オフセット。 NULL 値は許可されません。
audit_schema_version int 常に 1
class_type varchar(2) 監査が発生する監査可能なエンティティの種類。 NULL 値は許可されません。
client_ip nvarchar(128) 適用対象: Azure SQL Database + SQL Server (2017 以降)

クライアント アプリケーションのソース IP
connection_id GUID 適用対象: Azure SQL DatabaseとSQL Managed Instance

サーバーの接続の ID
data_sensitivity_information nvarchar(4000) 適用対象: Azure SQL Databaseのみ

データベースにある分類済みの列に基づく、監査済みクエリが返す情報の種類と機密ラベル。 Azure SQL Database のデータ検出と分類の詳細を参照してください。
database_name sysname アクションが発生したデータベース コンテキスト。 NULL 値が許可されます。 サーバー レベルで監査が行われている場合は NULL を返します。
database_principal_id int アクションが実行されるデータベース ユーザー コンテキストの ID。 NULL 値は許可されません。 この値が適用されない場合は 0 を返します。 たとえば、サーバー操作などの場合です。
database_principal_name sysname 現在のユーザー。 NULL 値が許可されます。 使用できない場合は NULL を返します。
duration_milliseconds bigint 適用対象: Azure SQL DatabaseとSQL Managed Instance

クエリ実行時間 (ミリ秒)
event_time datetime2 監査可能なアクションが発生した日時。 NULL 値は許可されません。
file_name varchar(260) レコードの取得元の監査ログ ファイルのパスと名前。 NULL 値は許可されません。
is_column_permission bit 列レベルのアクセス許可であるかどうかを示すフラグ。 NULL 値は許可されません。 permission_bitmask = 0 の場合は 0 を返します。
1 = true
0 = false
object_id int 監査が発生したエンティティの ID。 これには、次の内容が含まれます。
サーバー オブジェクト
データベース
データベース オブジェクト
スキーマ オブジェクト
NULL 値は許可されません。 エンティティがサーバー自体である場合、または監査がオブジェクト レベルで実行されない場合は 0 を返します。 たとえば、認証などの場合です。
object_name sysname 監査が発生したエンティティの名前。 これには、次の内容が含まれます。
サーバー オブジェクト
データベース
データベース オブジェクト
スキーマ オブジェクト
NULL 値が許可されます。 エンティティがサーバー自体である場合、または監査がオブジェクト レベルで実行されない場合は NULL を返します。 たとえば、認証などの場合です。
permission_bitmask varbinary(16) 一部のアクションでは、権限の許可、拒否、または取り消しを示します。
response_rows bigint 適用対象: Azure SQL DatabaseとSQL Managed Instance

結果セットで返される行数。
schema_name sysname アクションが発生したスキーマ コンテキスト。 NULL 値が許可されます。 スキーマの外部で発生した監査の NULL を返します。
sequence_group_id varbinary 適用対象: SQL Serverのみ (2016 以降)

一意識別子
sequence_number int 大きすぎて監査の書き込みバッファーに収まらなかった 1 つの監査レコード内のレコードの順序を追跡します。 NULL 値は許可されません。
server_instance_name sysname 監査が発生したサーバー インスタンスの名前。 標準の server\instance 形式が使用されます。
server_principal_id int アクションが実行されるログイン コンテキストの ID。 NULL 値は許可されません。
server_principal_name sysname 現在のログイン。 NULL 値が許可されます。
server_principal_sid varbinary 現在のログイン SID。 NULL 値が許可されます。
session_id smallint イベントが発生したセッションの ID。 NULL 値は許可されません。
session_server_principal_name sysname セッションのサーバー プリンシパル。 NULL 値が許可されます。 明示的または暗黙的なコンテキスト切り替えがあった場合にSQL Serverのインスタンスに接続された元のログインの ID を返します。
statement nvarchar (4000) TSQL ステートメントが存在する場合。 NULL 値が許可されます。 該当しない場合は NULL を返します。
succeeded bit イベントをトリガーしたアクションが成功したかどうかを示します。 NULL 値は許可されません。 ログイン イベント以外のすべてのイベントで、操作ではなく、権限チェックが成功したか失敗したかのみを報告します。
1 = 成功 (success)
0 = 失敗
target_database_principal_id int 許可、拒否、取り消し操作が実行されるデータベース プリンシパル。 NULL 値は許可されません。 該当しない場合は 0 を返します。
target_database_principal_name sysname アクションの対象ユーザー。 NULL 値が許可されます。 該当しない場合は NULL を返します。
target_server_principal_id int 許可、拒否または取り消し操作が実行されるサーバー プリンシパル。 NULL 値は許可されません。 該当しない場合は 0 を返します。
target_server_principal_name sysname アクションの対象ログイン。 NULL 値が許可されます。 該当しない場合は NULL を返します。
target_server_principal_sid varbinary 対象ログインのセキュリティ ID。 NULL 値が許可されます。 該当しない場合は NULL を返します。
transaction_id bigint 適用対象: SQL Serverのみ (2016 以降)

1 つのトランザクションで複数の監査イベントを識別する一意の識別子
user_defined_event_id smallint 適用対象: SQL Server 2012 (11.x) 以降、Azure SQL Database、SQL Managed Instance

sp_audit_writeの引数として渡されるユーザー定義イベント ID。 システム イベント (既定値) の場合は NULL、ユーザー定義イベントの場合は 0 以外。 詳細については、「sp_audit_write (Transact-SQL)」を参照してください。
user_defined_information nvarchar (4000) 適用対象: SQL Server 2012 (11.x) 以降、Azure SQL Database、SQL Managed Instance

sp_audit_write ストアド プロシージャを使用して、ユーザーが監査ログに記録する必要がある 追加情報を記録 するために使用します。

Remarks

  • fn_get_audit_fileに渡されたfile_pattern引数が存在しないパスまたはファイルを参照している場合、またはファイルが監査ファイルでない場合は、MSG_INVALID_AUDIT_FILE エラー メッセージが返されます。
  • APPLICATION_LOG、SECURITY_LOG、またはEXTERNAL_MONITORオプションを使用して監査を作成する場合、fn_get_audit_fileは使用できません

アクセス許可

  • SQL Server: CONTROL SERVER 権限が必要です。
  • Azure SQL Database: CONTROL DATABASE 権限が必要です。
    • サーバー管理者は、サーバー上のすべてのデータベースの監査ログにアクセスできます。
    • サーバー以外の管理者は、現在のデータベースからの監査ログにのみアクセスできます。
    • 上記の条件を満たしていない BLOB はスキップされ (スキップされた BLOB の一覧がクエリ出力メッセージに表示されます)、この関数はアクセスが許可されている BLOB からのみログを返します。

  • SQL Server

    この例では、\\serverName\Audit\HIPAA_AUDIT.sqlaudit という名前のファイルから読み取ります。

    SELECT * FROM sys.fn_get_audit_file ('\\serverName\Audit\HIPAA_AUDIT.sqlaudit',default,default);  
    GO  
    
  • Azure SQL Database

    この例では、次の名前 ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xelのファイルから読み取ります。

    SELECT * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel',default,default);
    GO  
    

    この例では、上記と同じファイルから読み取りますが、追加の T-SQL 句 (TOPORDER BY、WHERE 句を使用して関数から返される監査レコードをフィルター処理します)。

    SELECT TOP 10 * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel',default,default)
    WHERE server_principal_name = 'admin1'
    ORDER BY event_time
    GO
    

    次の例では、次で始まる Shサーバーからすべての監査ログを読み取ります。

    SELECT * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/Sh',default,default);
    GO  
    

監査を作成する方法の完全な例については、「SQL Server監査 (データベース エンジン)」を参照してください。

監査Azure SQL Database設定の詳細については、「SQL Database監査のはじめに」を参照してください。

参照

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)
サーバー監査およびサーバー監査の仕様を作成する