Bagikan melalui


sys.fn_get_audit_file (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

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

Catatan

Untuk Azure SQL Database, pertimbangkan untuk menggunakan sys.fn_get_audit_file_v2 sebagai gantinya. sys.fn_get_audit_file_v2 memperkenalkan pemfilteran berbasis waktu pada tingkat file dan rekaman, memberikan peningkatan performa yang signifikan, terutama untuk kueri yang menargetkan rentang waktu tertentu.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

file_pattern

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

Meneruskan jalur tanpa pola nama file menghasilkan kesalahan.

Argumen ini harus menyertakan jalur (huruf kandar atau berbagi jaringan) dan nama file yang dapat menyertakan kartubebas. Tanda bintang tunggal (*) dapat digunakan untuk mengumpulkan beberapa file dari kumpulan file audit. Contohnya:

  • \<path>\* - Kumpulkan semua file audit di lokasi yang ditentukan.

  • <path>\LoginsAudit_{GUID}* - Kumpulkan semua file audit yang memiliki nama dan pasangan GUID yang ditentukan.

  • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit - Kumpulkan file audit tertentu.

initial_file_name

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

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

audit_record_offset

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 . Jenisnya besar.

Tabel dikembalikan

Tabel berikut ini menjelaskan konten file audit yang dapat 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 = false
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//DENYREVOKE operasi dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika tidak berlaku.
target_database_principal_id int Prinsipal database tempat GRANT//DENYREVOKE 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.

Berlaku untuk: SQL Server saja
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).

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru, Azure SQL Database, dan SQL Managed Instance
user_defined_information nvarchar(4000) Digunakan untuk merekam informasi tambahan yang ingin dicatat pengguna dalam log audit dengan menggunakan prosedur tersimpan sp_audit_write .

Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru, Azure SQL Database, dan SQL Managed Instance
audit_schema_version int Selalu 1.
sequence_group_id varbinary Pengidentifikasi unik.

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
transaction_id bigint Pengidentifikasi unik untuk mengidentifikasi beberapa peristiwa audit dalam satu transaksi.

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
client_ip nvarchar(128) IP sumber aplikasi klien.

Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru, dan Azure SQL Database
application_name nvarchar(128) Nama aplikasi klien yang menjalankan pernyataan yang menyebabkan peristiwa audit.

Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru, dan Azure SQL Database
duration_milliseconds bigint Durasi eksekusi kueri dalam milidetik.

Berlaku untuk: Azure SQL Database dan SQL Managed Instance
response_rows bigint Jumlah baris yang dikembalikan dalam tataan hasil.

Berlaku untuk: Azure SQL Database dan SQL Managed Instance
affected_rows bigint Jumlah baris yang dipengaruhi oleh pernyataan yang dijalankan.

Berlaku untuk: Hanya Azure SQL Database
connection_id pengidentifikasi unik ID koneksi di server.

Berlaku untuk: Azure SQL Database dan SQL Managed Instance
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.

Berlaku untuk: Hanya 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.

Berlaku untuk: Hanya Azure SQL Database
external_policy_permissions_checked nvarchar(4000) Informasi yang terkait dengan pemeriksaan izin otorisasi eksternal, saat peristiwa audit dibuat, dan kebijakan otorisasi eksternal Purview dievaluasi.

Berlaku untuk: Hanya Azure SQL Database
obo_middle_tier_app_id varchar(120) ID aplikasi aplikasi tingkat menengah yang terhubung ke Azure SQL Database menggunakan akses atas nama (OBO). Dapat diubah ke null. Mengembalikan NULL jika permintaan tidak dibuat menggunakan akses OBO.

Berlaku untuk: Hanya Azure SQL Database
is_local_secondary_replica bit True jika rekaman audit berasal dari replika sekunder lokal baca-saja, False jika tidak.

Berlaku untuk: Hanya Azure SQL Database

Keterangan

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

  • fn_get_audit_file tidak dapat digunakan saat audit dibuat dengan APPLICATION_LOGopsi , , SECURITY_LOGatau EXTERNAL_MONITOR .

Izin

Memerlukan CONTROL SERVER izin.

Contoh

Contoh ini membaca dari file yang bernama \\serverName\Audit\HIPAA_AUDIT.sqlaudit.

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

Untuk contoh lengkap tentang cara membuat audit, lihat Audit SQL Server (Mesin Database).

Batasan

Memilih baris dari sys.fn_get_audit_file dalam Buat Tabel Sebagai Pilih (CTAS) atau INSERT INTO merupakan batasan saat berjalan di Azure Synapse Analytics. Meskipun kueri berhasil diselesaikan dan tidak ada pesan kesalahan yang muncul, tidak ada baris yang ada dalam tabel yang dibuat menggunakan CTAS atau INSERT INTO.

Informasi selengkapnya

Tampilan katalog sistem:

Transact-SQL: