sys.fn_get_audit_file (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

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

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. Misalnya:

  • \<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 Jenis Deskripsi
action_id varchar(4) ID tindakan. Tidak dapat diubah ke null.
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.
affected_rows bigint Jumlah baris yang dipengaruhi oleh pernyataan yang dijalankan.

Berlaku untuk: Hanya 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
audit_file_offset bigint Offset buffer dalam file yang berisi catatan audit. Tidak dapat diubah ke null.

Berlaku untuk: SQL Server saja
audit_schema_version int Selalu 1.
class_type varchar(2) Jenis entitas yang dapat diaudit tempat audit terjadi. Tidak dapat diubah ke null.
client_ip nvarchar(128) IP sumber aplikasi klien.

Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru, dan 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
database_name nama sysname Konteks database tempat tindakan terjadi. Dapat diubah ke null. Mengembalikan NULL untuk audit yang terjadi di tingkat server.
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.
database_principal_name nama sysname Pengguna saat ini. Dapat diubah ke null. Mengembalikan NULL jika tidak tersedia.
duration_milliseconds bigint Durasi eksekusi kueri dalam milidetik.

Berlaku untuk: Azure SQL Database dan SQL Managed Instance
event_time datetime2 Tanggal dan waktu ketika tindakan yang dapat diaudit diaktifkan. Tidak dapat diubah ke null.
file_name varchar(260) Jalur dan nama file log audit tempat rekaman berasal. Tidak dapat diubah ke null.
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
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.
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.
obo_middle_tier_app_id varchar(120) ID aplikasi aplikasi tingkat menengah yang terhubung ke Azure SQL Database menggunakan akses OBO. Dapat diubah ke null. Mengembalikan NULL jika permintaan tidak dibuat menggunakan akses OBO.

Berlaku untuk: Azure SQL Database
permission_bitmask varbinary(16) Dalam beberapa tindakan, bitmask ini adalah izin yang diberikan, ditolak, atau dicabut.
response_rows bigint Jumlah baris yang dikembalikan dalam tataan hasil.

Berlaku untuk: Azure SQL Database dan SQL Managed Instance
schema_name nama sysname Konteks skema di mana tindakan terjadi. Dapat diubah ke null. Mengembalikan NULL audit yang terjadi di luar skema.
sequence_group_id varbinary Pengidentifikasi unik.

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
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.
server_instance_name nama sysname Nama instans server tempat audit terjadi. Format server\instance standar digunakan.
server_principal_id int ID konteks masuk tempat tindakan dilakukan. Tidak dapat diubah ke null.
server_principal_name nama sysname Login saat ini. Dapat diubah ke null.
server_principal_sid varbinary SID login saat ini. Dapat diubah ke null.
session_id smallint ID sesi tempat peristiwa 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 SQL Server jika ada sakelar konteks eksplisit atau implisit.
statement nvarchar(4000) Pernyataan T-SQL jika ada. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
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
target_database_principal_id int Prinsipal database tempat GRANT//DENYREVOKE operasi dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika tidak berlaku.
target_database_principal_name nama sysname Targetkan pengguna tindakan. Dapat diubah ke null. Mengembalikan NULL jika tidak berlaku.
target_server_principal_id int Prinsipal server tempat GRANT//DENYREVOKE operasi dilakukan. Tidak dapat diubah ke null. Mengembalikan 0 jika tidak berlaku.
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.
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
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

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.