sys.fn_get_audit_file(Transact-SQL)sys.fn_get_audit_file (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server에서 서버 감사에 의해 생성된 감사 파일로부터 정보를 반환합니다.Returns information from an audit file created by a server audit in SQL ServerSQL Server. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.For more information, see SQL Server Audit (Database Engine).

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

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

인수Arguments

file_patternfile_pattern
읽을 감사 파일 집합의 디렉터리나 경로와 파일 이름을 지정합니다.Specifies the directory or path and file name for the audit file set to be read. 형식이 nvarchar (260)합니다.Type is nvarchar(260).

  • SQL Server:SQL Server:

    이 인수에는 경로와 파일 이름이 모두 포함되어야 합니다. 드라이브 문자나 네트워크 공유를 경로로 사용할 수 있으며, 파일 이름에 와일드카드를 사용할 수 있습니다.This argument must include both a path (drive letter or network share) and a file name that can include a wildcard. 감사 파일 집합에서 여러 파일을 수집 하도록 단일 별표 ()를 사용할 수 있습니다.A single asterisk () can be used to collect multiple files from an audit file set. 예를 들어For example:

    • <경로 >\ \* 수집-모든 지정 된 위치에 있는 파일을 감사 합니다.<path>\\* - Collect all audit files in the specified location.

    • <경로 > \LoginsAudit_{GUID} 수집-모든 지정 된 이름 및 GUID 쌍 파일을 감사 합니다.<path>\LoginsAudit_{GUID} - Collect all audit files that have the specified name and GUID pair.

    • <경로 > \LoginsAudit_{GUID}_00_29384.sqlaudit -특정 감사 파일을 수집 합니다.<path>\LoginsAudit_{GUID}_00_29384.sqlaudit - Collect a specific audit file.

  • Azure SQL 데이터베이스:Azure SQL Database:

    (저장소 끝점 및 컨테이너 포함) blob URL을 지정 하려면이 인수가 사용 됩니다.This argument is used to specify a blob URL (including the storage endpoint and container). 별표 와일드 카드를 지원 하지 않는 동안에이 접두사로 시작 하는 여러 파일 (blob)을 수집 하도록 전체 blob 이름) (대신 부분 (blob) 파일 이름 접두사를 사용할 수 있습니다.While it does not support an asterisk wildcard, you can use a partial file (blob) name prefix (instead of the full blob name) to collect multiple files (blobs) that begin with this prefix. 예를 들어For example:

    • <Storage_endpoint>/<컨테이너>/<ServerName>/<DatabaseName> / -특정 데이터베이스에 대 한 모든 감사 파일 (blob)을 수집 합니다.<Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - collects all audit files (blobs) for the specific database.

    • <Storage_endpoint>/<컨테이너>/<ServerName>/<DatabaseName> / <AuditName>/<CreationDate>/<FileName>.xel -특정 감사 파일 (blob)을 수집 합니다.<Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - collects a specific audit file (blob).

참고

파일 이름 패턴 없이 경로를 전달하면 오류가 생성됩니다.Passing a path without a file name pattern will generate an error.

initial_file_nameinitial_file_name
감사 파일 집합에서 감사 레코드를 읽기 시작할 특정 파일의 경로와 이름을 지정합니다.Specifies the path and name of a specific file in the audit file set to start reading audit records from. 형식이 nvarchar (260)합니다.Type is nvarchar(260).

참고

initial_file_name 인수에 유효한 항목이 또는 기본 있어야 합니다. | NULL 값입니다.The initial_file_name argument must contain valid entries or must contain either the default | NULL value.

audit_record_offsetaudit_record_offset
initial_file_name에 지정된 파일 기준의 오프셋을 지정합니다.Specifies a known location with the file specified for the initial_file_name. 이 인수를 사용하면 함수가 지정된 오프셋 바로 다음에 있는 버퍼의 첫 번째 레코드에서 읽기를 시작합니다.When this argument is used the function will start reading at the first record of the Buffer immediately following the specified offset.

참고

audit_record_offset 인수에 유효한 항목이 또는 기본 있어야 합니다. | NULL 값입니다.The audit_record_offset argument must contain valid entries or must contain either the default | NULL value. 형식이 bitint합니다.Type is bitint.

반환된 테이블Tables Returned

다음 표에서는 이 함수가 반환할 수 있는 감사 파일 내용에 대해 설명합니다.The following table describes the audit file content that can be returned by this function.

열 이름Column name 형식Type DescriptionDescription
event_timeevent_time datetime2datetime2 감사 가능한 동작이 발생한 날짜 및 시간입니다.Date and time when the auditable action is fired. Null을 허용하지 않습니다.Is not nullable.
sequence_numbersequence_number intint 너무 커서 감사에 대한 쓰기 버퍼에 맞지 않는 단일 감사 레코드 내의 레코드 시퀀스를 추적합니다.Tracks the sequence of records within a single audit record that was too large to fit in the write buffer for audits. Null을 허용하지 않습니다.Is not nullable.
action_idaction_id varchar(4)varchar(4) 동작의 ID입니다.ID of the action. Null을 허용하지 않습니다.Is not nullable.
succeededsucceeded bitbit 이벤트를 발생시킨 동작의 성공 여부를 나타냅니다.Indicates whether the action that triggered the event succeeded. Null을 허용하지 않습니다.Is not nullable. 로그인 이벤트를 제외한 모든 이벤트의 경우 작업이 아닌 권한 검사의 성공 또는 실패 여부만 보고합니다.For all events other than login events, this only reports whether the permission check succeeded or failed, not the operation.
1 = 성공1 = success
0 = 실패0 = fail
permission_bitmaskpermission_bitmask varbinary (16)varbinary(16) 일부 동작에서 이는 허용, 거부 또는 취소된 사용 권한입니다.In some actions, this is the permissions that were grant, denied, or revoked.
is_column_permissionis_column_permission bitbit 열 수준 사용 권한임을 나타내는 플래그입니다.Flag indicating if this is a column level permission. Null을 허용하지 않습니다.Is not nullable. permission_bitmask가 0이면 0을 반환합니다.Returns 0 when the permission_bitmask = 0.
1 = true1 = true
0 = false0 = false
session_idsession_id smallintsmallint 이벤트가 발생한 세션의 ID입니다.ID of the session on which the event occurred. Null을 허용하지 않습니다.Is not nullable.
server_principal_idserver_principal_id intint 동작을 수행한 로그인 컨텍스트의 ID입니다.ID of the login context that the action is performed in. Null을 허용하지 않습니다.Is not nullable.
database_principal_iddatabase_principal_id intint 동작을 수행한 데이터베이스 사용자 컨텍스트의 ID입니다.ID of the database user context that the action is performed in. Null을 허용하지 않습니다.Is not nullable. 이것이 적용되지 않으면 0을 반환합니다(예:Returns 0 if this does not apply. 서버 작업).For example, a server operation.
target_server_principal_idtarget_server_principal_id intint GRANT/DENY/REVOKE 작업이 수행되는 서버 보안 주체입니다.Server principal that the GRANT/DENY/REVOKE operation is performed on. Null을 허용하지 않습니다.Is not nullable. 적용되지 않으면 0을 반환합니다.Returns 0 if not applicable.
target_database_principal_idtarget_database_principal_id intint GRANT/DENY/REVOKE 작업이 수행되는 데이터베이스 보안 주체입니다.The database principal the GRANT/DENY/REVOKE operation is performed on. Null을 허용하지 않습니다.Is not nullable. 적용되지 않으면 0을 반환합니다.Returns 0 if not applicable.
object_idobject_id intint 감사가 수행된 대상 엔터티의 ID입니다.The ID of the entity on which the audit occurred. 여기에는 다음이 포함됩니다.This includes the following:
서버 개체Server objects
데이터베이스Databases
데이터베이스 개체Database objects
스키마 개체Schema objects
Null을 허용하지 않습니다.Is not nullable. 엔터티가 서버 자체이거나 개체 수준에서 감사가 수행되지 않으면 0을 반환합니다(예:Returns 0 if the entity is the Server itself or if the audit is not performed at an object level. 인증).For example, Authentication.
class_typeclass_type varchar(2)varchar(2) 감사가 수행되는 감사 가능한 엔터티의 형식입니다.The type of auditable entity that the audit occurs on. Null을 허용하지 않습니다.Is not nullable.
session_server_principal_namesession_server_principal_name sysnamesysname 세션에 대한 서버 보안 주체입니다.Server principal for session. Null을 허용합니다.Is nullable.
server_principal_nameserver_principal_name sysnamesysname 현재 로그인입니다.Current login. Null을 허용합니다.Is nullable.
server_principal_sidserver_principal_sid varbinaryvarbinary 현재 로그인 SID입니다.Current login SID. Null을 허용합니다.Is nullable.
database_principal_namedatabase_principal_name sysnamesysname 현재 사용자입니다.Current user. Null을 허용합니다.Is nullable. 사용할 수 없으면 NULL을 반환합니다.Returns NULL if not available.
target_server_principal_nametarget_server_principal_name sysnamesysname 동작의 대상 로그인입니다.Target login of action. Null을 허용합니다.Is nullable. 적용할 수 없으면 NULL을 반환합니다.Returns NULL if not applicable.
target_server_principal_sidtarget_server_principal_sid varbinaryvarbinary 대상 로그인의 SID입니다.SID of target login. Null을 허용합니다.Is nullable. 적용할 수 없으면 NULL을 반환합니다.Returns NULL if not applicable.
target_database_principal_nametarget_database_principal_name sysnamesysname 동작의 대상 사용자입니다.Target user of action. Null을 허용합니다.Is nullable. 적용할 수 없으면 NULL을 반환합니다.Returns NULL if not applicable.
server_instance_nameserver_instance_name sysnamesysname 감사가 수행된 서버 인스턴스의 이름입니다.Name of the server instance where the audit occurred. 표준 서버\인스턴스 형식을 사용합니다.The standard server\instance format is used.
database_namedatabase_name sysnamesysname 동작이 수행된 데이터베이스 컨텍스트입니다.The database context in which the action occurred. Null을 허용합니다.Is nullable. 서버 수준에서 수행되는 감사에 대해 NULL을 반환합니다.Returns NULL for audits occuring at the server level.
schema_nameschema_name sysnamesysname 동작이 수행된 스키마 컨텍스트입니다.The schema context in which the action occurred. Null을 허용합니다.Is nullable. 스키마 외부에서 수행되는 감사에 대해 NULL을 반환합니다.Returns NULL for audits occuring outside a schema.
object_nameobject_name sysnamesysname 감사가 수행된 대상 엔터티의 이름입니다.The name of the entity on which the audit occurred. 여기에는 다음이 포함됩니다.This includes the following:
서버 개체Server objects
데이터베이스Databases
데이터베이스 개체Database objects
스키마 개체Schema objects
Null을 허용합니다.Is nullable. 엔터티가 서버 자체이거나 개체 수준에서 감사가 수행되지 않으면 Null을 반환합니다(예:Returns NULL if the entity is the Server itself or if the audit is not performed at an object level. 인증).For example, Authentication.
statementstatement nvarchar(4000)nvarchar(4000) TSQL 문이 있는 경우 TSQL 문입니다.TSQL statement if it exists. Null을 허용합니다.Is nullable. 적용할 수 없으면 NULL을 반환합니다.Returns NULL if not applicable.
additional_informationadditional_information nvarchar(4000)nvarchar(4000) 단일 이벤트에만 적용되는 고유 정보가 XML로 반환됩니다.Unique information that only applies to a single event is returned as XML. 감사 가능한 적은 수의 동작에 이 종류의 정보가 포함되어 있습니다.A small number of auditable actions contain this kind of information.

TSQL 스택이 연결되어 있는 동작에 대해 단일 TSQL 스택 수준이 XML 형식으로 표시됩니다.One level of TSQL stack will be displayed in XML format for actions that have TSQL stack associated with them. 이 XML 형식은 다음과 같습니다.The XML format will be:

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

프레임 nest_level은 프레임의 현재 중첩 수준을 나타냅니다.Frame nest_level indicates the current nesting level of the frame. 모듈 이름은 세 부분(database_name, schema_name, object_name)으로 된 형식으로 표시됩니다.The Module name is represented in three part format (database_name, schema_name and object_name). 모듈 이름 처럼 잘못 된 xml 문자를 이스케이프 처리를 구문 분석 됩니다 '\<', '>', '/', '_x'합니다.The module name will be parsed to escape invalid xml characters like '\<', '>', '/', '_x'. 로 이스케이프 됩니다 _xHHHH\_합니다.They will be escaped as _xHHHH\_. HHHH는 해당 문자에 대한 4자리 16진수 UCS-2 코드를 나타냅니다.The HHHH stands for the four-digit hexadecimal UCS-2 code for the character

Null을 허용합니다.Is nullable. 이벤트에서 보고한 추가 정보가 없으면 NULL을 반환합니다.Returns NULL when there is no additional information reported by the event.
file_namefile_name varchar(260)varchar(260) 레코드를 가져온 감사 로그 파일의 경로 및 이름입니다.The path and name of the audit log file that the record came from. Null을 허용하지 않습니다.Is not nullable.
audit_file_offsetaudit_file_offset bigintbigint 감사 레코드가 포함된 파일의 버퍼 오프셋입니다.The buffer offset in the file that contains the audit record. Null을 허용하지 않습니다.Is not nullable.
user_defined_event_iduser_defined_event_id smallintsmallint 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

사용자 정의 이벤트 id에 대 한 인수로 전달 된 sp_audit_write합니다.User defined event id passed as an argument to sp_audit_write. NULL 시스템 이벤트 (기본값)에 대 한 및 0이 아닌 사용자 정의 이벤트에 대 한 합니다.NULL for system events (default) and non-zero for user-defined event. 자세한 내용은 참조 sp_audit_write ( Transact SQL ) .For more information, see sp_audit_write (Transact-SQL).
user_defined_informationuser_defined_information nvarchar(4000)nvarchar(4000) 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

사용자가을에 기록 하려는 추가 정보를 기록 하는 데 사용Used to record any extra information the user wants to record in
audit_schema_versionaudit_schema_version intint
sequence_group_idsequence_group_id nvarbinarynvarbinary SQL Server만 (2016부터 시작)SQL Server only (starting with 2016)
transaction_idtransaction_id bigintbigint SQL Server만 (2016부터 시작)SQL Server only (starting with 2016)
client_ipclient_ip nvarchar (128)nvarchar(128) Azure SQL DB + SQL Server (2017부터 시작)Azure SQL DB + SQL Server (starting with 2017)
application_nameapplication_name nvarchar (128)nvarchar(128) Azure SQL DB + SQL Server (2017부터 시작)Azure SQL DB + SQL Server (starting with 2017)
duration_millisecondsduration_milliseconds bigintbigint Azure SQL DB에만Azure SQL DB only
response_rowsresponse_rows bigintbigint Azure SQL DB에만Azure SQL DB only
affected_rowsaffected_rows bigintbigint Azure SQL DB에만Azure SQL DB only

주의Remarks

경우는 file_pattern 인수에 전달 된 fn_get_audit_file 존재 하지 않는 파일 또는 경로 참조 하거나 파일이 감사 파일이 없으면는 MSG_INVALID_AUDIT_FILE오류 메시지가 반환 됩니다.If the file_pattern argument passed to fn_get_audit_file references a path or file that does not exist, or if the file is not an audit file, the MSG_INVALID_AUDIT_FILE error message is returned.

PermissionsPermissions

  • SQL Server: 필요는 제어 서버 권한.SQL Server: Requires the CONTROL SERVER permission.
  • Azure SQL DB: 필요는 제어 데이터베이스 권한.Azure SQL DB: Requires the CONTROL DATABASE permission.
    • 서버 관리자는 서버의 모든 데이터베이스의 감사 로그에 액세스할 수 있습니다.Server admins can access audit logs of all databases on the server.
    • 비 서버 관리자는 현재 데이터베이스에서 감사 로그만 액세스할 수 있습니다.Non server admins can only access audit logs from the current database.
    • 앞의 조건을 충족 하지 않는 blob 건너뜁니다 (건너뛴 blob 목록에에서 나타납니다 쿼리 출력 메시지)를 함수 액세스 허용 되는 blob 에서만에서 로그를 반환 합니다.Blobs that do not meet the above criteria will be skipped (a list of skipped blobs will be displayed in the query output message), and the function will return logs only from blobs for which access is allowed.

Examples

  • SQL ServerSQL Server

    다음 예에서는 이름이 \\serverName\Audit\HIPPA_AUDIT.sqlaudit인 파일에서 읽습니다.This example reads from a file that is named \\serverName\Audit\HIPPA_AUDIT.sqlaudit.

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

    이 예에서는 라는 파일에서 읽는 ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel:This example reads from a file that is named 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, 및 여기서 절에서 반환 된 감사 레코드를 필터링에 함수 사용):This example reads from the same file as above, but with additional T-SQL clauses (TOP, ORDER BY, and WHERE clause for filtering the audit records returned by the function):

    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:This example reads all audit logs from servers that begin with Sh:

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

감사를 만드는 방법에 대 한 전체 예제를 보려면 SQL Server Audit ( 데이터베이스 엔진 )합니다.For a full example about how to create an audit, see SQL Server Audit (Database Engine).

Azure SQL 데이터베이스 감사를 설정에 대 한 자세한 내용은 참조 하십시오. SQL 데이터베이스 감사 시작합니다.For information on setting up Azure SQL Database auditing, see Get Started with SQL Database auditing.

관련 항목:See Also

서버 감사 ( 만들기 Transact SQL ) CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER audit( Transact SQL ) ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER audit( Transact SQL ) DROP SERVER AUDIT (Transact-SQL)
SERVER AUDIT specification( 만들기 Transact SQL ) CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT specification( Transact SQL ) ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT specification( Transact SQL ) DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
DATABASE AUDIT specification( 만들기 Transact SQL ) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT specification( Transact SQL ) ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT specification( Transact SQL ) DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER authorization( Transact SQL ) ALTER AUTHORIZATION (Transact-SQL)
sys.server_audits( Transact SQL ) sys.server_audits (Transact-SQL)
sys.server_file_audits( Transact SQL ) sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications( Transact SQL ) sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details( Transact SQL ) sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications( Transact SQL ) sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details( Transact SQL ) sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status( Transact SQL ) sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions( Transact SQL ) sys.dm_audit_actions (Transact-SQL)
sys.dm_audit_class_type_map( Transact SQL ) sys.dm_audit_class_type_map (Transact-SQL)
서버 감사 및 서버 감사 사양 만들기Create a Server Audit and Server Audit Specification