sys.fn_get_audit_file (Transact-SQL)
適用対象:Azure Synapse Analytics Azure SQL Managed Instance Azure SQL Database
SQL Server
(サポートされているすべてのバージョン)
SQL Serverのサーバー監査によって作成された監査ファイルから情報を返します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。
構文
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 句 (TOP、ORDER 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)
サーバー監査およびサーバー監査の仕様を作成する