다음을 통해 공유


sys.fn_get_audit_file(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics

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

참고 항목

Azure SQL Database의 경우 대신 sys.fn_get_audit_file_v2 사용하는 것이 좋습니다. sys.fn_get_audit_file_v2 에서는 파일 및 레코드 수준 모두에서 시간 기반 필터링을 도입하여 특히 특정 시간 범위를 대상으로 하는 쿼리의 경우 성능이 크게 향상되었습니다.

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 인수는 유효한 항목을 포함하거나 값 또는 NULL 값을 포함 default 해야 합니다.

audit_record_offset

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

audit_record_offset 인수는 유효한 항목을 포함하거나 값 또는 NULL 값을 포함 default 해야 합니다. 유형이 bigint입니다.

반환된 테이블

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

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

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

1 = true
0 = false
session_id smallint 이벤트가 발생한 세션의 ID입니다. Null을 허용하지 않습니다.
server_principal_id int 동작을 수행한 로그인 컨텍스트의 ID입니다. Null을 허용하지 않습니다.
database_principal_id int 작업을 수행한 데이터베이스 사용자 컨텍스트의 ID입니다. Null을 허용하지 않습니다. 적용되지 않으면 반환 0 합니다. 예를 들어 서버 작업입니다.
target_server_principal_id int 작업이 수행되는 서버 보안 주체 GRANT//DENYREVOKE 입니다. Null을 허용하지 않습니다. 해당되지 않는 경우 반환 0 합니다.
target_database_principal_id int 작업이 수행되는 데이터베이스 보안 주체 GRANT//DENYREVOKE 입니다. Null을 허용하지 않습니다. 해당되지 않는 경우 반환 0 합니다.
object_id int 다음 개체를 포함하는 감사가 발생한 엔터티의 ID입니다.

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

Null을 허용하지 않습니다. 엔터티가 서버 자체인지 또는 감사가 개체 수준에서 수행되지 않는지 여부를 반환 0 합니다. 예를 들어 인증입니다.
class_type varchar(2) 감사가 수행되는 감사 가능한 엔터티의 유형입니다. Null을 허용하지 않습니다.
session_server_principal_name sysname 세션의 서버 주체입니다. Nullable. 명시적 또는 암시적 컨텍스트 전환이 있는 경우 데이터베이스 엔진 인스턴스에 연결된 원래 로그인의 ID를 반환합니다.
server_principal_name sysname 현재 로그인입니다. Nullable.
server_principal_sid varbinary 현재 로그인 SID(보안 식별자)입니다. Nullable.
database_principal_name sysname 현재 사용자입니다. Nullable. 사용할 수 없는 경우 반환 NULL 합니다.
target_server_principal_name sysname 동작의 대상 로그인입니다. Nullable. 해당되지 않는 경우 반환 NULL 합니다.
target_server_principal_sid varbinary 대상 로그인의 SID입니다. Nullable. 해당되지 않는 경우 반환 NULL 합니다.
target_database_principal_name sysname 동작의 대상 사용자입니다. Nullable. 해당되지 않는 경우 반환 NULL 합니다.
server_instance_name sysname 감사가 수행된 서버 인스턴스의 이름입니다. 표준 server\instance 형식이 사용됩니다.
database_name sysname 작업이 수행된 데이터베이스 컨텍스트입니다. Nullable. 서버 수준에서 발생하는 감사에 대한 반환 NULL 입니다.
schema_name sysname 동작이 수행된 스키마 컨텍스트입니다. Nullable. 스키마 외부에서 발생하는 감사에 대한 반환 NULL 입니다.
object_name sysname 다음 개체를 포함하는 감사가 발생한 엔터티의 이름입니다.

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

Nullable. 엔터티가 서버 자체인지 또는 감사가 개체 수준에서 수행되지 않는지 여부를 반환 NULL 합니다. 예를 들어 인증입니다.
statement nvarchar(4000) Transact-SQL 문(있는 경우)입니다. Nullable. 해당되지 않는 경우 반환 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)으로 표시됩니다. 모듈 이름은 구문 분석되어 , , /_x와 같은 <잘못된 XML 문자를 이스케이프>합니다. 로 이스케이프됩니다 _xHHHH_. 문자 HHHH 의 4자리 16진수 UCS-2 코드를 나타냅니다. Nullable. 이벤트에서 보고한 추가 정보가 없으면 반환 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입니다. Nullable. OBO 액세스를 사용하여 요청이 이루어지지 않는 경우 반환 NULL 합니다.

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

적용 대상: Azure SQL Database만 해당

설명

  • 전달된 fn_get_audit_file file_pattern 인수가 존재하지 않는 경로 또는 파일을 참조하거나 파일이 감사 파일이 MSG_INVALID_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를 사용하여 만든 테이블에는 행이 없습니다.

자세한 정보

시스템 카탈로그 뷰:

Transact-SQL: