Bagikan melalui


sys.fn_get_audit_file_v2 (T-SQL)

Berlaku untuk:Database Azure SQLGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Fungsi sys.fn_get_audit_file_v2 sistem dirancang untuk mengambil data log audit dengan efisiensi yang ditingkatkan dibandingkan dengan pendahulunya, sys.fn_get_audit_file. Fungsi ini memperkenalkan pemfilteran berbasis waktu pada tingkat file dan rekaman, memberikan peningkatan performa yang signifikan, terutama untuk kueri yang menargetkan rentang waktu tertentu.

Mengembalikan informasi dari file audit yang dibuat oleh audit server. Untuk informasi selengkapnya, lihat Audit SQL Server (Mesin Database).

Konvensi sintaks transact-SQL

Sintaks

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 } )

Argumen

file_pattern

Berlaku untuk: Hanya Azure SQL Database

Menentukan direktori atau jalur dan nama file untuk set file audit yang akan dibaca. file_pattern adalah nvarchar(260).

Meneruskan jalur tanpa pola nama file menghasilkan kesalahan.

Argumen ini digunakan untuk menentukan URL blob (termasuk titik akhir penyimpanan dan kontainer). Meskipun tidak mendukung wildcard tanda bintang, Anda dapat menggunakan awalan nama file parsial (blob) (bukan nama blob lengkap) untuk mengumpulkan beberapa file (blob) yang dimulai dengan awalan ini. Contohnya:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - mengumpulkan semua file audit (blob) untuk database tertentu.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - mengumpulkan file audit tertentu (blob).

initial_file_name

Berlaku untuk: Hanya Azure SQL Database

Menentukan jalur dan nama file tertentu dalam set file audit untuk mulai membaca catatan audit. initial_file_name adalah nvarchar(260).

Argumen initial_file_name harus berisi entri yang valid atau harus berisi default nilai atau NULL .

audit_record_offset

Berlaku untuk: Hanya Azure SQL Database

Menentukan lokasi yang diketahui dengan file yang ditentukan untuk initial_file_name. Ketika argumen ini digunakan, fungsi mulai membaca pada rekaman pertama buffer segera setelah offset yang ditentukan.

Argumen audit_record_offset harus berisi entri yang valid atau harus berisi default nilai atau NULL . audit_record_offset besar.

start_time

Waktu mulai untuk memfilter log. Rekaman sebelum waktu ini dikecualikan.

end_time

Waktu akhir untuk memfilter log. Rekaman setelah waktu ini dikecualikan.

Tabel dikembalikan

Tabel berikut ini menjelaskan konten file audit yang dikembalikan oleh fungsi ini.

Nama kolom Tipe Deskripsi
event_time datetime2 Tanggal dan waktu ketika tindakan yang dapat diaudit diaktifkan. Tidak dapat diubah ke null.
sequence_number int Melacak urutan rekaman dalam satu catatan audit yang terlalu besar agar pas di buffer tulis untuk audit. Tidak dapat diubah ke null.
action_id varchar(4) ID tindakan. Tidak dapat diubah ke null.
succeeded bit Menunjukkan apakah tindakan yang memicu peristiwa berhasil. Tidak dapat diubah ke null. Untuk semua peristiwa selain peristiwa masuk, ini hanya melaporkan apakah pemeriksaan izin berhasil atau gagal, bukan operasi.

1 = berhasil
0 = gagal
permission_bitmask varbinary(16) Dalam beberapa tindakan, bitmask ini adalah izin yang diberikan, ditolak, atau dicabut.
is_column_permission bit Bendera menunjukkan apakah ini adalah izin tingkat kolom. Tidak dapat diubah ke null. Mengembalikan 0 saat permission_bitmask = 0.

1 = benar
0 = salah
session_id smallint ID sesi tempat peristiwa terjadi. Tidak dapat diubah ke null.
server_principal_id int ID konteks masuk tempat tindakan dilakukan. Tidak dapat diubah ke null.
database_principal_id int ID konteks pengguna database tempat tindakan dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika ini tidak berlaku. Misalnya, operasi server.
target_server_principal_id int Prinsipal server tempat GRANT/DENY/REVOKE operasi dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika tidak berlaku.
target_database_principal_id int Prinsipal database tempat GRANT/DENY/REVOKE operasi dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika tidak berlaku.
object_id int ID entitas tempat audit terjadi, yang mencakup objek berikut:

- Objek server
-Database
- Objek database
- Objek skema

Tidak dapat diubah ke null. Mengembalikan 0 jika entitas adalah Server itu sendiri atau jika audit tidak dilakukan pada tingkat objek. Misalnya, Autentikasi.
class_type varchar(2) Jenis entitas yang dapat diaudit tempat audit terjadi. Tidak dapat diubah ke null.
session_server_principal_name nama sysname Perwakilan server untuk sesi. Dapat diubah ke null. Mengembalikan identitas login asli yang tersambung ke instans Mesin Database jika ada sakelar konteks eksplisit atau implisit.
server_principal_name nama sysname Login saat ini. Dapat diubah ke null.
server_principal_sid varbinary SID login saat ini. Dapat diubah ke null.
database_principal_name nama sysname Pengguna saat ini. Dapat diubah ke null. Mengembalikan NULL jika tidak tersedia.
target_server_principal_name nama sysname Target masuk tindakan. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
target_server_principal_sid varbinary SID dari target masuk. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
target_database_principal_name nama sysname Targetkan pengguna tindakan. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
server_instance_name nama sysname Nama instans server tempat audit terjadi. Format standar server\instance digunakan.
database_name nama sysname Konteks database tempat tindakan terjadi. Dapat diubah ke null. Mengembalikan NULL untuk audit yang terjadi di tingkat server.
schema_name nama sysname Konteks skema di mana tindakan terjadi. Dapat diubah ke null. Mengembalikan NULL audit yang terjadi di luar skema.
object_name nama sysname Nama entitas tempat audit terjadi, yang mencakup objek berikut:

- Objek server
-Database
- Objek database
- Objek skema

Dapat diubah ke null. Mengembalikan NULL jika entitas adalah Server itu sendiri atau jika audit tidak dilakukan pada tingkat objek. Misalnya, Autentikasi.
statement nvarchar(4000) Pernyataan T-SQL jika ada. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
additional_information nvarchar(4000) Informasi unik yang hanya berlaku untuk satu peristiwa dikembalikan sebagai XML. Beberapa tindakan yang dapat diaudit berisi informasi semacam ini.

Satu tingkat tumpukan T-SQL ditampilkan dalam format XML untuk tindakan yang memiliki tumpukan T-SQL yang terkait dengannya. Format XML adalah: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level menunjukkan tingkat berlapis bingkai saat ini. Nama modul diwakili dalam format tiga bagian (database_name, schema_name, dan object_name). Nama modul diurai untuk meloloskan karakter XML yang tidak valid seperti <, >, /, _x. Mereka lolos sebagai _xHHHH_. Singkatan HHHH dari kode UCS-2 heksadesimal empat digit untuk karakter tersebut. Dapat diubah ke null. Mengembalikan NULL ketika tidak ada informasi tambahan yang dilaporkan oleh peristiwa.
file_name varchar(260) Jalur dan nama file log audit tempat rekaman berasal. Tidak dapat diubah ke null.
audit_file_offset bigint Offset buffer dalam file yang berisi catatan audit. Tidak dapat diubah ke null.
user_defined_event_id smallint ID peristiwa yang ditentukan pengguna diteruskan sebagai argumen ke sp_audit_write. NULL untuk peristiwa sistem (default) dan bukan nol untuk peristiwa yang ditentukan pengguna. Untuk informasi selengkapnya, lihat sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Digunakan untuk merekam informasi tambahan yang ingin dicatat pengguna dalam log audit dengan menggunakan prosedur tersimpan sp_audit_write .
audit_schema_version int Selalu 1.
sequence_group_id varbinary Pengidentifikasi unik.<
transaction_id bigint Pengidentifikasi unik untuk mengidentifikasi beberapa peristiwa audit dalam satu transaksi.
client_ip nvarchar(128) IP sumber aplikasi klien.
application_name nvarchar(128) Nama aplikasi klien yang menjalankan pernyataan yang menyebabkan peristiwa audit.
duration_milliseconds bigint Durasi eksekusi kueri dalam milidetik.
response_rows bigint Jumlah baris yang ditampilkan dalam kumpulan hasil.<
affected_rows bigint Jumlah baris yang dipengaruhi oleh pernyataan yang dijalankan.
connection_id pengidentifikasi unik ID koneksi di server.
data_sensitivity_information nvarchar(4000) Jenis informasi dan label sensitivitas yang dikembalikan oleh kueri yang diaudit, berdasarkan kolom yang diklasifikasikan dalam database. Pelajari selengkapnya tentang penemuan dan klasifikasi data Azure SQL Database.
host_name nvarchar(128) Nama Host komputer klien.
session_context nvarchar(4000) Pasangan kunci-nilai yang merupakan bagian dari konteks sesi saat ini.
client_tls_version bigint Versi TLS minimum yang didukung oleh klien.
client_tls_version_name nvarchar(128) Versi TLS minimum yang didukung oleh klien.
database_transaction_id bigint ID transaksi transaksi saat ini dalam sesi saat ini.
ledger_start_sequence_number bigint Nomor urut operasi dalam transaksi yang membuat versi baris.
external_policy_permissions_checked nvarchar(4000) Informasi yang terkait dengan pemeriksaan izin otorisasi eksternal, saat peristiwa audit dibuat, dan kebijakan otorisasi eksternal Purview dievaluasi.
obo_middle_tier_app_id varchar(120) ID aplikasi aplikasi tingkat menengah yang terhubung menggunakan akses atas nama (OBO). Dapat diubah ke null. Mengembalikan NULL jika permintaan tidak dibuat menggunakan akses OBO.
is_local_secondary_replica bit True jika rekaman audit berasal dari replika sekunder lokal baca-saja, False jika tidak.

Peningkatan atas sys.fn_get_audit_file

Fungsi ini sys.fn_get_audit_file_v2 menawarkan peningkatan besar atas sys.fn_get_audit_file yang lebih lama dengan memperkenalkan pemfilteran berbasis waktu yang efisien di tingkat file dan rekaman. Pengoptimalan ini sangat bermanfaat untuk kueri yang menargetkan rentang waktu yang lebih kecil dan dapat membantu menjaga performa di lingkungan multi-database.

Pemfilteran tingkat ganda

Pemfilteran tingkat file: Fungsi pertama-tama memfilter file berdasarkan rentang waktu yang ditentukan, mengurangi jumlah file yang perlu dipindai.

Pemfilteran tingkat rekaman: Kemudian menerapkan pemfilteran dalam file yang dipilih untuk mengekstrak hanya rekaman yang relevan.

peningkatan performa

Peningkatan performa terutama tergantung pada waktu rollover file blob dan rentang waktu yang dikueri. Dengan asumsi distribusi rekaman audit yang seragam:

  • Mengurangi beban: Dengan meminimalkan jumlah file dan rekaman yang akan dipindai, ini mengurangi beban pada sistem dan meningkatkan waktu respons kueri.

  • Skalabilitas: Membantu mempertahankan performa bahkan saat jumlah database meningkat, meskipun peningkatan bersih mungkin kurang terucap di lingkungan dengan jumlah database yang tinggi.

Keterangan

Jika argumen file_pattern diteruskan untuk fn_get_audit_file_v2 mereferensikan jalur atau file yang tidak ada, atau jika file bukan file audit, MSG_INVALID_AUDIT_FILE pesan kesalahan dikembalikan.

Fungsi tidak fn_get_audit_file_v2 dapat digunakan saat audit dibuat dengan APPLICATION_LOGopsi , SECURITY_LOG, atau EXTERNAL_MONITOR .

Saat ini di Fabric Data Warehouse, Anda tidak dapat mengakses file individual, hanya folder audit. Argumen berikut tidak didukung untuk Audit SQL pada item gudang: file_pattern, initial_file_name, . audit_record_offset

Izin

Izin yang diperlukan di Azure SQL Database

Memerlukan CONTROL DATABASE izin.

  • Admin server dapat mengakses log audit semua database di server.

  • Admin non server hanya dapat mengakses log audit dari database saat ini.

  • Blob yang tidak memenuhi kriteria di atas dilewati (daftar blob yang dilewati ditampilkan dalam pesan output kueri). Fungsi mengembalikan log hanya dari blob yang aksesnya diizinkan.

Izin yang diperlukan dalam database Fabric SQL

Untuk mengelola audit menggunakan peran ruang kerja Fabric, pengguna harus memiliki keanggotaan dalam peran Kontributor ruang kerja Fabric atau izin yang lebih tinggi. Untuk mengelola audit dengan izin SQL:

  • Untuk mengonfigurasi audit database, pengguna harus memiliki izin ALTER ANY DATABASE AUDIT.
  • Untuk melihat log audit menggunakan T-SQL, pengguna harus memiliki izin LIHAT AUDIT KEAMANAN DATABASE.

Untuk informasi selengkapnya, lihat Mengaudit dalam database Fabric SQL.

Izin yang diperlukan di Fabric Data Warehouse

Pengguna harus memiliki izin item Audit Fabric. Untuk informasi selengkapnya, lihat Izin.

Contoh

A. Melihat log audit SQL untuk Azure SQL Database

Contoh ini mengambil log audit dari lokasi Azure Blob Storage tertentu, memfilter rekaman antara 2023-11-17T08:40:40Z dan 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. Melihat log audit SQL untuk Fabric Data Warehouse

Contoh ini mengambil log audit dari folder OneLake yang selaras dengan ruang kerja dan gudang saat ini, memfilter rekaman antara 2023-11-17T08:40:40Z dan 2023-11-17T09:10:40Z.

Di portal Fabric, ambil dan workspaceIDwarehouseID:

  • <workspaceID>: Kunjungi ruang kerja Anda di portal Fabric. Temukan GUID ruang kerja di URL setelah /groups/ bagian, atau dengan menjalankan SELECT @@SERVERNAME di gudang yang ada. Jika URL Anda /groups/ diikuti oleh /me/, Anda menggunakan ruang kerja default, dan saat ini SQL Audit for Fabric Data Warehouse tidak didukung di ruang kerja default.
  • <warehouseID>: Kunjungi gudang Anda di portal Fabric. Temukan ID gudang di URL setelah /warehouses/ bagian.
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. Melihat log audit SQL untuk database SQL di Microsoft Fabric

Contoh ini mengambil log audit dari OneLake di Microsoft Fabric, antara 2025-11-17T08:40:40Z dan 2025-11-17T09:10:40Z.

Dalam skrip berikut, Anda perlu memberikan ID ruang kerja Microsoft Fabric dan ID database Anda. Keduanya dapat ditemukan di URL dari portal Fabric. Misalnya: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. String pengidentifikasi unik pertama dalam URL adalah ID ruang kerja Fabric, dan string pengidentifikasi unik kedua adalah ID database SQL.

  • Ganti <fabric_workspace_id> dengan ID ruang kerja Fabric Anda. Anda dapat menemukan ID ruang kerja dengan mudah di URL, yang merupakan rangkaian unik antara dua karakter / setelah /groups/ di jendela penelusur Anda.
  • Ganti <fabric sql database id> dengan database SQL Anda di ID database Fabric. Anda dapat menemukan ID item database dengan mudah di URL, ini adalah string unik di dalam dua / karakter setelah /sqldatabases/ di jendela browser Anda.
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')

Informasi selengkapnya

Tampilan katalog sistem:

Transact-SQL: