다음을 통해 공유


sys.fn_get_audit_file(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric의 SQL 데이터베이스

SQL Server의 서버 감사에서 만든 감사 파일의 정보를 반환합니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.

팁 (조언)

대신 sys.fn_get_audit_file_v2 사용을 고려해 보세요. 이 sys.fn_get_audit_file_v2 기능은 파일 및 레코드 수준 모두에서 시간 기반 필터링을 도입하여, 특히 특정 시간 범위를 대상으로 하는 쿼리에서 성능 향상을 크게 제공합니다.

팁 (조언)

Fabric Data Warehouse의 경우, sys.fn_get_audit_file 지원되지만 sys.fn_get_audit_file_v2 (Transact-SQL) 을 권장합니다. 이 sys.fn_get_audit_file_v2 기능은 파일 및 레코드 수준 모두에서 시간 기반 필터링을 도입하여, 특히 특정 시간 범위를 대상으로 하는 쿼리에서 성능 향상을 크게 제공합니다. 자세한 정보와 예시는 Fabric Data Warehouse에서 감사 구성 항목을 참조하세요.

팁 (조언)

패브릭 sys.fn_get_audit_file 내 SQL 데이터베이스는 지원되지만, sys.fn_get_audit_file_v2 (Transact-SQL) 를 권장합니다. 이 sys.fn_get_audit_file_v2 기능은 파일 및 레코드 수준 모두에서 시간 기반 필터링을 도입하여, 특히 특정 시간 범위를 대상으로 하는 쿼리에서 성능 향상을 크게 제공합니다. 자세한 정보와 예시는 Fabric SQL 데이터베이스에서 감사 구성 항목을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

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

인수

file_pattern

읽을 감사 파일 집합의 디렉터리 또는 경로 및 파일 이름을 지정합니다. nvarchar(260) 유형입니다.

파일 이름 패턴 없이 경로를 전달하면 오류가 발생합니다.

이 인수에는 경로(드라이브 문자 또는 네트워크 공유)와 와일드카드를 포함할 수 있는 파일 이름이 모두 포함되어야 합니다. 단일 별표(*)를 사용하여 감사 파일 집합에서 여러 파일을 수집할 수 있습니다. 예시:

  • \<path>\* - 지정된 위치에 있는 모든 감사 파일을 수집합니다.

  • <path>\LoginsAudit_{GUID}* - 지정된 이름과 GUID 쌍을 가진 모든 감사 파일을 수집합니다.

  • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit - 특정 감사 파일을 수집합니다.

initial_file_name

감사 파일 집합에서 감사 레코드를 읽기 시작할 특정 파일의 경로와 이름을 지정합니다. nvarchar(260) 유형입니다.

initial_file_name 인수는 합니다.

audit_record_offset

initial_file_name 지정된 파일이 있는 알려진 위치를 지정합니다. 이 인수를 사용하면 함수는 지정된 오프셋 바로 다음 버퍼의 첫 번째 레코드에서 읽기 시작합니다.

audit_record_offset 인수는 합니다. 유형이 bigint입니다.

반환된 테이블

다음 표에서는 이 함수에서 반환할 수 있는 감사 파일 콘텐츠에 대해 설명합니다.

열 이름 유형 설명
event_time datetime2 감사 가능한 작업이 발생한 UTC 날짜 및 시간입니다. Null을 허용하지 않습니다.
sequence_number int 너무 커서 감사에 대한 쓰기 버퍼에 맞지 않는 단일 감사 레코드 내의 레코드 시퀀스를 추적합니다. Null을 허용하지 않습니다.
action_id varchar(4) 작업의 ID입니다. Null을 허용하지 않습니다.
succeeded 비트 이벤트를 발생시킨 동작의 성공 여부를 나타냅니다. Null을 허용하지 않습니다. 로그인 이벤트 이외의 모든 이벤트에 대해 이 작업은 작업이 아닌 권한 검사 성공 또는 실패 여부만 보고합니다.

1 = 성공
0 = 실패
permission_bitmask 바바이너리(16) 일부 작업에서 이 비트 마스크는 부여, 거부 또는 해지된 권한입니다.
is_column_permission 비트 열 수준 사용 권한임을 나타내는 플래그입니다. Null을 허용하지 않습니다. 를 반환 0 합니다 permission_bitmask = 0.

1 = 참입니다
0 = 거짓
session_id smallint (스몰인트) 이벤트가 발생한 세션의 ID입니다. Null을 허용하지 않습니다.
server_principal_id int 동작을 수행한 로그인 컨텍스트의 ID입니다. Null을 허용하지 않습니다.
database_principal_id int 작업을 수행한 데이터베이스 사용자 컨텍스트의 ID입니다. 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 다음 개체를 포함하는 감사가 발생한 엔터티의 ID입니다.

- 서버 개체
-데이터베이스
- 데이터베이스 개체
- 스키마 개체

Null을 허용하지 않습니다. 엔터티가 서버 자체인지 또는 감사가 개체 수준에서 수행되지 않는지 여부를 반환 0 합니다. 예를 들어 인증입니다.
class_type varchar(2)입니다. 감사가 수행되는 감사 가능한 엔터티의 유형입니다. Null을 허용하지 않습니다.
session_server_principal_name sysname 세션의 서버 주체입니다. Null을 허용합니다. 명시적 또는 암시적 컨텍스트 전환이 있는 경우 데이터베이스 엔진 인스턴스에 연결된 원래 로그인의 ID를 반환합니다.
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 sysname 감사가 수행된 서버 인스턴스의 이름입니다. 표준 server\instance 형식이 사용됩니다.
database_name sysname 작업이 수행된 데이터베이스 컨텍스트입니다. Null을 허용합니다. 서버 수준에서 발생하는 감사에 대한 반환 NULL 입니다.
schema_name sysname 동작이 수행된 스키마 컨텍스트입니다. Null을 허용합니다. 스키마 외부에서 발생하는 감사에 대한 반환 NULL 입니다.
object_name sysname 다음 개체를 포함하는 감사가 발생한 엔터티의 이름입니다.

- 서버 개체
-데이터베이스
- 데이터베이스 개체
- 스키마 개체

Null을 허용합니다. 엔터티가 서버 자체인지 또는 감사가 개체 수준에서 수행되지 않는지 여부를 반환 NULL 합니다. 예를 들어 인증입니다.
statement nvarchar(4000) Transact-SQL 문(있는 경우)입니다. Null을 허용합니다. 해당되지 않는 경우 반환 NULL 합니다.
additional_information nvarchar(4000) 단일 이벤트에만 적용되는 고유 정보는 XML로 반환됩니다. 감사 가능한 몇 가지 작업에는 이러한 종류의 정보가 포함됩니다.

T-SQL 스택이 연결된 작업의 경우 한 수준의 T-SQL 스택이 XML 형식으로 표시됩니다. XML 형식은 다음과 같습니다. <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level 는 프레임의 현재 중첩 수준을 나타냅니다. 모듈 이름은 세 부분 형식(database_nameschema_nameobject_name)으로 표시됩니다. 모듈 이름은 구문 분석되어 , , <>와 같은 /잘못된 XML 문자를 이스케이프_x합니다. 로 이스케이프됩니다 _xHHHH_. 문자 HHHH 의 4자리 16진수 UCS-2 코드를 나타냅니다. Null을 허용합니다. 이벤트에서 보고한 추가 정보가 없으면 반환 NULL 합니다.
file_name varchar(260) 레코드를 가져온 감사 로그 파일의 경로 및 이름입니다. Null을 허용하지 않습니다.
audit_file_offset bigint 감사 레코드가 포함된 파일의 버퍼 오프셋입니다. Null을 허용하지 않습니다.

적용 대상: SQL Server만 해당
user_defined_event_id smallint (스몰인트) 인수로 전달된 사용자 정의 이벤트 ID입니다 sp_audit_write. NULL 시스템 이벤트(기본값) 및 사용자 정의 이벤트의 경우 0이 아닙니다. 자세한 내용은 sp_audit_write 참조하세요.

적용 대상: 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
audit_schema_version int 항상 1입니다.
sequence_group_id varbinary 고유 식별자.

적용 대상: SQL Server 2016(13.x) 이상 버전
transaction_id bigint 한 트랜잭션에서 여러 감사 이벤트를 식별하는 고유 식별자입니다.

적용 대상: SQL Server 2016(13.x) 이상 버전
client_ip nvarchar(128) 클라이언트 애플리케이션의 원본 IP입니다.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
application_name nvarchar(128) 감사 이벤트를 발생시킨 문을 실행한 클라이언트 애플리케이션의 이름입니다.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
duration_milliseconds bigint 쿼리 실행 기간(밀리초)입니다.

적용 대상: Azure SQL Database 및 SQL Managed Instance
response_rows bigint 결과 집합에 반환된 행 수입니다.

적용 대상: Azure SQL Database 및 SQL Managed Instance
affected_rows bigint 실행된 문의 영향을 받는 행 수입니다.

적용 대상: Azure SQL Database만 해당
connection_id uniqueidentifier 서버의 연결 ID입니다.

적용 대상: Azure SQL Database 및 SQL Managed Instance
data_sensitivity_information nvarchar(4000) 데이터베이스의 분류된 열을 기반으로 감사된 쿼리에서 반환하는 정보 유형 및 민감도 레이블입니다. Azure SQL Database 데이터 검색 및 분류에 대해 자세히 알아봅니다.

적용 대상: Azure SQL Database만 해당
host_name nvarchar(128) 클라이언트 컴퓨터의 호스트 이름입니다.
session_context nvarchar(4000) 현재 세션 컨텍스트의 일부인 키-값 쌍입니다.
client_tls_version bigint 클라이언트에서 지원하는 최소 TLS 버전입니다.
client_tls_version_name nvarchar(128) 클라이언트에서 지원하는 최소 TLS 버전입니다.
database_transaction_id bigint 현재 세션의 현재 트랜잭션에 대한 트랜잭션 ID입니다.
ledger_start_sequence_number bigint 트랜잭션 내에서 행 버전을 만든 작업의 시퀀스 번호입니다.

적용 대상: Azure SQL Database만 해당
external_policy_permissions_checked nvarchar(4000) 감사 이벤트가 생성되고 Purview 외부 권한 부여 정책이 평가될 때 외부 권한 부여 권한 검사와 관련된 정보입니다.

적용 대상: Azure SQL Database만 해당
obo_middle_tier_app_id varchar(120) OBO(On-Behalf-of) 액세스를 사용하여 Azure SQL Database에 연결하는 중간 계층 애플리케이션의 애플리케이션 ID입니다. Null을 허용합니다. OBO 액세스를 사용하여 요청이 이루어지지 않는 경우 반환 NULL 합니다.

적용 대상: Azure SQL Database만 해당
is_local_secondary_replica 비트 True 감사 레코드가 읽기 전용 로컬 보조 복제본 False 에서 시작되면 그렇지 않습니다.

적용 대상: Azure SQL Database만 해당

설명

  • 인수가 존재하지 않는 경로 또는 파일을 참조하거나 파일이 감사 파일이 fn_get_audit_file 아닌 경우 오류 메시지가 반환됩니다.

  • fn_get_audit_file는 또는 옵션을 사용하여 감사를 만들 APPLICATION_LOGSECURITY_LOGEXTERNAL_MONITOR 때 사용할 수 없습니다.

사용 권한

SQL Server 2019(15.x) 및 이전 버전에는 서버에 대한 권한이 필요합니다 CONTROL SERVER .

SQL Server 2022(16.x) 이상 버전에는 서버에 대한 권한이 필요합니다 VIEW SERVER SECURITY AUDIT .

예제

이 예제에서는 이름이 지정된 \\serverName\Audit\HIPAA_AUDIT.sqlaudit파일에서 읽습니다.

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

감사를 만드는 방법에 대한 전체 예제에 대해서는 SQL Server Audit(데이터베이스 엔진)를 참조하세요.

제한 사항

CTAS(Create Table As Select) 내에서 행 sys.fn_get_audit_file 을 선택하거나 INSERT INTO Azure Synapse Analytics에서 실행할 때 제한 사항입니다. 쿼리가 성공적으로 완료되고 오류 메시지가 표시되지 않지만 CTAS 또는 INSERT INTO를 사용하여 만든 테이블에는 행이 없습니다.

자세한 정보

시스템 카탈로그 뷰:

트랜잭션-SQL: