적용 대상:Azure SQL Database
Microsoft Fabric
의 웨어하우스Microsoft Fabric의 SQL 데이터베이스
sys.fn_get_audit_file_v2 이 시스템 기능은 이전 버전에 비해 감사 로그 데이터를 더 효율적으로 검색하도록 설계되었습니다. sys.fn_get_audit_file 이 함수는 파일 및 레코드 수준 모두에서 시간 기반 필터링을 도입하여 특히 특정 시간 범위를 대상으로 하는 쿼리의 성능이 크게 향상되었습니다.
서버 감사가 생성한 감사 파일에서 정보를 반환합니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.
- Azure SQL Database 감사 설정에 대한 자세한 내용은 SQL Database 감사 시작을 참조 하세요.
- Fabric Data Warehouse 감사 설정에 관한 정보는 Fabric Data Warehouse의 SQL 감사 로그를 참조하세요.
- Fabric 감사에서 SQL 데이터베이스를 설정하는 방법에 대한 정보는 ' SQL Audit in SQL Database in Fabric'을 참조하세요.
구문
fn_get_audit_file_v2 ( file_pattern
, { default | initial_file_name | NULL }
, { default | audit_record_offset | NULL }
, { default | start time | NULL }
, { default | end time | NULL } )
인수
file_pattern
적용 대상: Azure SQL Database만 해당
읽을 감사 파일 집합의 디렉터리 또는 경로 및 파일 이름을 지정합니다. file_pattern nvarchar(260)입니다.
파일 이름 패턴 없이 경로를 전달하면 오류가 발생합니다.
이 인수는 Blob URL(스토리지 엔드포인트 및 컨테이너 포함)을 지정하는 데 사용됩니다. 별표 와일드카드는 지원하지 않지만 전체 Blob 이름 대신 부분 파일(Blob) 이름 접두사를 사용하여 이 접두사로 시작하는 여러 파일(Blob)을 수집할 수 있습니다. 예시:
<Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/- 특정 데이터베이스에 대한 모든 감사 파일(Blob)을 수집합니다.<Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel- 특정 감사 파일(Blob)을 수집합니다.
initial_file_name
적용 대상: Azure SQL Database만 해당
감사 파일 집합에서 감사 레코드를 읽기 시작할 특정 파일의 경로와 이름을 지정합니다. initial_file_name nvarchar(260)입니다.
initial_file_name 인수는 합니다.
audit_record_offset
적용 대상: Azure SQL Database만 해당
initial_file_name 지정된 파일이 있는 알려진 위치를 지정합니다. 이 인수를 사용하면 함수는 지정된 오프셋 바로 다음 버퍼의 첫 번째 레코드에서 읽기 시작합니다.
audit_record_offset 인수는 합니다. audit_record_offset 대단합니다.
start_time
로그를 필터링하기 위한 시작 시간입니다. 이 시간 이전의 레코드는 제외됩니다.
end_time
로그를 필터링하는 종료 시간입니다. 이 시간 이후의 레코드는 제외됩니다.
반환된 테이블
다음 표에서는 이 함수에서 반환된 감사 파일 콘텐츠에 대해 설명합니다.
| 열 이름 | Type | 설명 |
|---|---|---|
event_time |
datetime2 | 감사 가능한 동작이 발생한 날짜 및 시간입니다. Null을 허용하지 않습니다. |
sequence_number |
int | 너무 커서 감사에 대한 쓰기 버퍼에 맞지 않는 단일 감사 레코드 내의 레코드 시퀀스를 추적합니다. Null을 허용하지 않습니다. |
action_id |
varchar(4) | 작업의 ID입니다. Null을 허용하지 않습니다. |
succeeded |
bit | 이벤트를 발생시킨 동작의 성공 여부를 나타냅니다. Null을 허용하지 않습니다. 로그인 이벤트 이외의 모든 이벤트에 대해 이 작업은 작업이 아닌 권한 검사 성공 또는 실패 여부만 보고합니다.1 = 성공0 = 실패 |
permission_bitmask |
varbinary(16) | 일부 작업에서 이 비트 마스크는 부여, 거부 또는 해지된 권한입니다. |
is_column_permission |
bit | 열 수준 사용 권한임을 나타내는 플래그입니다. 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 | 세션의 서버 주체입니다. 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_name및schema_nameobject_name)으로 표시됩니다. 모듈 이름은 구문 분석되어 , , <>와 같은 /잘못된 XML 문자를 이스케이프_x합니다. 로 이스케이프됩니다 _xHHHH_. 문자 HHHH 의 4자리 16진수 UCS-2 코드를 나타냅니다. Nullable. 이벤트에서 보고한 추가 정보가 없으면 반환 NULL 합니다. |
file_name |
varchar(260) | 레코드를 가져온 감사 로그 파일의 경로 및 이름입니다. Null을 허용하지 않습니다. |
audit_file_offset |
bigint | 감사 레코드가 포함된 파일의 버퍼 오프셋입니다. Null을 허용하지 않습니다. |
user_defined_event_id |
smallint | 인수로 전달된 사용자 정의 이벤트 ID입니다 sp_audit_write.
NULL 시스템 이벤트(기본값) 및 사용자 정의 이벤트의 경우 0이 아닙니다. 자세한 내용은 sp_audit_write(Transact-SQL)를 참조 하세요. |
user_defined_information |
nvarchar(4000) | 저장 프로시저를 사용하여 sp_audit_write 감사 로그에 기록하려는 추가 정보를 기록하는 데 사용됩니다. |
audit_schema_version |
int | 항상 1입니다. |
sequence_group_id |
varbinary | 고유 식별자.< |
transaction_id |
bigint | 한 트랜잭션에서 여러 감사 이벤트를 식별하는 고유 식별자입니다. |
client_ip |
nvarchar(128) | 클라이언트 애플리케이션의 원본 IP입니다. |
application_name |
nvarchar(128) | 감사 이벤트를 발생시킨 문을 실행한 클라이언트 애플리케이션의 이름입니다. |
duration_milliseconds |
bigint | 쿼리 실행 기간(밀리초)입니다. |
response_rows |
bigint | 결과 집합에서 반환된 행 수.< |
affected_rows |
bigint | 실행된 문의 영향을 받는 행 수입니다. |
connection_id |
uniqueidentifier | 서버의 연결 ID입니다. |
data_sensitivity_information |
nvarchar(4000) | 데이터베이스의 분류된 열을 기반으로 감사된 쿼리에서 반환하는 정보 유형 및 민감도 레이블입니다. 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 | 트랜잭션 내에서 행 버전을 만든 작업의 시퀀스 번호입니다. |
external_policy_permissions_checked |
nvarchar(4000) | 감사 이벤트가 생성되고 Purview 외부 권한 부여 정책이 평가될 때 외부 권한 부여 권한 검사와 관련된 정보입니다. |
obo_middle_tier_app_id |
varchar(120) | 중간 계층 애플리케이션의 애플리케이션 ID로, 대신(OBO) 접근을 통해 연결됩니다. Nullable. OBO 액세스를 사용하여 요청이 이루어지지 않는 경우 반환 NULL 합니다. |
is_local_secondary_replica |
bit |
True 감사 레코드가 읽기 전용 로컬 보조 복제본 False 에서 시작되면 그렇지 않습니다. |
sys.fn_get_audit_file 비해 향상된 기능
이 함수는 sys.fn_get_audit_file_v2 파일 및 레코드 수준 모두에서 효율적인 시간 기반 필터링을 도입하여 이전 sys.fn_get_audit_file 비해 크게 향상되었습니다. 이 최적화는 더 작은 시간 범위를 대상으로 하는 쿼리에 특히 도움이 되며 다중 데이터베이스 환경에서 성능을 유지하는 데 도움이 될 수 있습니다.
이중 수준 필터링
파일 수준 필터링: 이 함수는 먼저 지정된 시간 범위에 따라 파일을 필터링하여 검사해야 하는 파일 수를 줄입니다.
레코드 수준 필터링: 선택한 파일 내에서 필터링을 적용하여 관련 레코드만 추출합니다.
성능 향상
성능 향상은 주로 Blob 파일의 롤오버 시간과 쿼리된 시간 범위에 따라 달라집니다. 감사 레코드의 균일한 분포를 가정합니다.
부하 감소: 검색할 파일 및 레코드 수를 최소화하여 시스템의 부하를 줄이고 쿼리 응답 시간을 향상시킵니다.
확장성: 데이터베이스 수가 증가하더라도 성능을 유지하는 데 도움이 되지만, 데이터베이스 수가 많은 환경에서는 순 개선이 덜 두드러질 수 있습니다.
설명
인수가 존재하지 않는 경로 또는 파일을 참조하거나 파일이 감사 파일이 fn_get_audit_file_v2 아닌 경우 오류 메시지가 반환됩니다.
fn_get_audit_file_v2 감사가 , APPLICATION_LOG, 또는 SECURITY_LOG 옵션으로 EXTERNAL_MONITOR생성될 때는 이 함수를 사용할 수 없습니다.
현재 Fabric Data Warehouse에서는 개별 파일에 접근할 수 없고 감사 폴더만 접근할 수 있습니다. 다음 인수들은 스토리지 항목에 대한 SQL 감사에 지원되지 않습니다: file_pattern, , initial_file_nameaudit_record_offset.
사용 권한
Azure SQL 데이터베이스에서 필요한 권한
CONTROL DATABASE 권한이 필요합니다.
서버 관리자는 서버에 있는 모든 데이터베이스의 감사 로그에 액세스할 수 있습니다.
비 서버 관리자는 현재 데이터베이스의 감사 로그에만 액세스할 수 있습니다.
위의 조건을 충족하지 않는 Blob은 건너뜁니다(건너뛴 Blob 목록이 쿼리 출력 메시지에 표시됨). 이 함수는 액세스가 허용되는 Blob에서만 로그를 반환합니다.
패브릭 SQL 데이터베이스에서 필요한 권한이 필요합니다
Fabric 작업 공간 역할을 사용해 감사를 관리하려면, 사용자는 Fabric workspace 기여자 역할 또는 그 이상의 권한을 가지고 있어야 합니다. SQL 권한으로 감사를 관리하려면 다음을 수행합니다.
- 데이터베이스 감사를 구성하려면 사용자에게 ALTER ANY DATABASE AUDIT 권한이 있어야 합니다.
- T-SQL을 사용하여 감사 로그를 보려면 사용자에게 VIEW DATABASE SECURITY AUDIT 권한이 있어야 합니다.
자세한 내용은 Fabric SQL 데이터베이스에서의 감사를 참조하세요.
패브릭 데이터 웨어하우스에서 필요한 권한
사용자는 Fabric 아이템 Audit 권한을 가져야 합니다. 자세한 내용은 사용 권한을 참조하세요.
예제
A. Azure SQL Database SQL audit logs 보기
이 예제에서는 특정 Azure Blob Storage 위치에서 감사 로그를 검색하여 레코드를 2023-11-17T08:40:40Z 필터링합니다 2023-11-17T09:10:40Z.
SELECT *
FROM sys.fn_get_audit_file_v2(
'https://<storage_account>.blob.core.windows.net/sqldbauditlogs/server_name/database_name/SqlDbAuditing_ServerAudit/',
DEFAULT,
DEFAULT,
'2023-11-17T08:40:40Z',
'2023-11-17T09:10:40Z')
B. 패브릭 데이터 웨어하우스용 SQL 감사 로그 보기
이 예시는 현재 작업 공간과 창고에 정렬된 OneLake 폴더에서 감사 로그를 불러와, 와 2023-11-17T08:40:40Z간의 레코드 2023-11-17T09:10:40Z 를 필터링합니다.
패브릭 포털에서 당신의 workspaceID 그리고 warehouseID:
-
<workspaceID>: Fabric 포털에서 작업 공간을 방문하세요. 섹션 뒤/groups/URL에서 작업 공간 GUID를 찾거나 기존 웨어하우스에서 실행SELECT @@SERVERNAME하세요. URL 뒤에 가 붙/groups/으면/me/기본 작업 공간을 사용하고 있으며, 현재 Fabric Data Warehouse용 SQL Audit는 기본 작업 공간에서 지원되지 않습니다. -
<warehouseID>: 패브릭 포털에서 당신의 창고를 방문하세요. 섹션 뒤/warehouses/의 URL에서 창고 ID를 찾으세요.
SELECT *
FROM sys. fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/{workspaceId}/{warehouseId}/Audit/sqldbauditlogs/',
DEFAULT,
DEFAULT,
'2023-11-17T08:40:40Z',
'2023-11-17T09:10:40Z')
C. Microsoft Fabric에서 SQL 데이터베이스의 SQL 감사 로그를 보기
이 예시는 Microsoft Fabric에서 OneLake에서 감사 2025-11-17T08:40:40Z로그를 가져오며, 2025-11-17T09:10:40Z 와 사이의 경우입니다.
다음 스크립트에서는 Microsoft Fabric 작업 공간 ID와 데이터베이스 ID를 제공해야 합니다. 두 가지 모두 Fabric 포털의 URL에서 찾을 수 있습니다. 예: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. URL의 첫 번째 고유 식별자 문자열은 Fabric 작업 공간 ID이고, 두 번째 고유 식별자 문자열은 SQL 데이터베이스 ID입니다.
-
<fabric_workspace_id>를 패브릭 작업 영역 ID로 바꾸세요. URL에서 작업 영역의 ID를 쉽게 찾을 수 있습니다. 이 ID는 브라우저 창에서 두/문자 안에 있는/groups/고유한 문자열입니다. - 패브릭 데이터베이스 ID에서
<fabric sql database id>를 자신의 SQL 데이터베이스로 대체합니다. URL에서 데이터베이스 항목의 ID를 쉽게 찾을 수 있습니다. 이 ID는 브라우저 창에서 두/문자 안에/sqldatabases/있는 고유한 문자열입니다.
SELECT *
FROM sys.fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
DEFAULT,
DEFAULT,
'2025-11-17T08:40:40Z',
'2025-11-17T09:10:40Z')
자세한 정보
시스템 카탈로그 뷰:
- 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)
Transact-SQL:
- 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)