sys.fn_get_audit_file (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

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

Transact-SQL 構文表記規則

構文

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

引数

file_pattern

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

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

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

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

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

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

initial_file_name

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

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

audit_record_offset

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

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

返されるテーブル

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

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

T-SQL スタックが関連付けられているアクションについては、1 レベルの T-SQL スタックが XML 形式で表示されます。 XML 形式は次のとおりです。 <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level は、フレームの現在の入れ子レベルを示します。 モジュール名は、3 つの部分形式 (database_nameschema_nameおよび object_name) で表されます。 モジュール名が解析され、,>, , _x/のような無効な XML 文字が<エスケープされます。 彼らはとしてエスケープされています _xHHHH\_. 文字の HHHH 4 桁の 16 進数 UCS-2 コードを表します。 Null 許容。 NULLイベントによって報告された追加情報がない場合に返されます。
affected_rows bigint 実行されたステートメントの影響を受ける行の数。

適用対象: Azure SQL Database のみ
application_name nvarchar(128) 監査イベントの原因となったステートメントを実行したクライアント アプリケーションの名前。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
audit_file_offset bigint 監査レコードを含むファイル内のバッファー オフセット。 NULL 値は許可されません。

適用対象: SQL Server のみ
audit_schema_version int 常に 1 です。
class_type varchar(2) 監査が発生する監査可能なエンティティの種類。 NULL 値は許可されません。
client_ip nvarchar(128) クライアント アプリケーションのソース IP。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
connection_id uniqueidentifier サーバー内の接続の ID。

適用対象: Azure SQL Database と SQL Managed Instance
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 値は許可されません。 次の値を返します0 = permission_bitmask0

1 = true
0 = false
object_id int 監査が発生したエンティティの ID。これには、次のオブジェクトが含まれます。

- サーバー オブジェクト
-データベース
- データベース オブジェクト
- スキーマ オブジェクト

NULL 値は許可されません。 0エンティティがサーバー自体の場合、または監査がオブジェクト レベルで実行されていない場合に返します。 たとえば、認証などの場合です。
object_name sysname 監査が発生したエンティティの名前。これには、次のオブジェクトが含まれます。

- サーバー オブジェクト
-データベース
- データベース オブジェクト
- スキーマ オブジェクト

Null 許容。 NULLエンティティがサーバー自体の場合、または監査がオブジェクト レベルで実行されていない場合に返します。 たとえば、認証などの場合です。
obo_middle_tier_app_id varchar(120) OBO アクセスを使用して Azure SQL Database に接続する中間層アプリケーションのアプリケーション ID。 Null 許容。 NULL OBO アクセスを使用して要求が行われていない場合に返します。

適用対象: Azure SQL Database
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 (13.x) 以降のバージョン
sequence_number int 大きすぎて監査の書き込みバッファーに収まらなかった 1 つの監査レコード内のレコードの順序を追跡します。 NULL 値は許可されません。
server_instance_name sysname 監査が発生したサーバー インスタンスの名前。 標準のサーバー/インスタンス形式が使用されます。
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) Transact-SQL ステートメントが存在する場合。 Null 許容。 該当しない場合は返されます NULL
succeeded bit イベントをトリガーしたアクションが成功したかどうかを示します。 NULL 値は許可されません。 ログイン イベント以外のすべてのイベントで、操作ではなく、権限チェックが成功したか失敗したかのみを報告します。

1 = 成功
0 = fail
target_database_principal_id int 操作がGRANT//DENYREVOKE実行されるデータベース プリンシパル。 NULL 値は許可されません。 該当しない場合は返されます 0
target_database_principal_name sysname アクションの対象ユーザー。 Null 許容。 該当しない場合は返されます NULL
target_server_principal_id int 操作が実行されるGRANT//DENYREVOKEサーバー プリンシパル。 NULL 値は許可されません。 該当しない場合は返されます 0
target_server_principal_name sysname アクションの対象ログイン。 Null 許容。 該当しない場合は返されます NULL
target_server_principal_sid varbinary 対象ログインのセキュリティ ID。 Null 許容。 該当しない場合は返されます NULL
transaction_id bigint 1 つのトランザクションで複数の監査イベントを識別する一意の識別子。

適用対象: SQL Server 2016 (13.x) 以降のバージョン
user_defined_event_id smallint 引数 sp_audit_writeとして渡されるユーザー定義イベント ID。 NULL システム イベント (既定) の場合は 0 以外、ユーザー定義イベントの場合は 0 以外。 詳細については、「 sp_audit_write (Transact-SQL)」を参照してください。

適用対象: SQL Server 2012 (11.x) 以降、Azure SQL Database、SQL Managed Instance
user_defined_information nvarchar (4000) ユーザーがストアド プロシージャを使用して監査ログに記録する追加情報を sp_audit_write 記録するために使用されます。

適用対象: SQL Server 2012 (11.x) 以降のバージョン、Azure SQL Database、および SQL Managed Instance

解説

  • 存在しないパスまたはファイルを参照するためにfn_get_audit_file渡されたfile_pattern引数、またはファイルが監査ファイルでない場合は、MSG_INVALID_AUDIT_FILEエラー メッセージが返されます。

  • fn_get_audit_fileは、監査の作成時に 、SECURITY_LOGまたはEXTERNAL_MONITORオプションをAPPLICATION_LOG使用して使用することはできません。

アクセス許可

CONTROL SERVER アクセス許可が必要です。

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

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

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

制限事項

Create Table As Select (CTAS) 内から sys.fn_get_audit_file 行を選択するか INSERT INTO 、Azure Synapse Analytics で実行する場合の制限事項です。 クエリは正常に完了し、エラー メッセージは表示されませんが、CTAS または INSERT INTO.