Bagikan melalui


Catatan Audit SQL Server

Berlaku untuk:SQL Server

Fitur Audit SQL Server memungkinkan Anda mengaudit grup peristiwa dan peristiwa tingkat server dan tingkat database. Untuk informasi selengkapnya, lihat Audit SQL Server (Mesin Database). SQL Server.

Audit terdiri dari nol atau lebih item tindakan audit, yang dicatat ke target audit. Target audit dapat berupa file biner, log peristiwa Aplikasi Windows, atau log peristiwa Keamanan Windows. Rekaman yang dikirim ke target dapat berisi elemen yang dijelaskan dalam tabel berikut:

Nama kolom Deskripsi Jenis Selalu tersedia
event_time Tanggal dan waktu ketika tindakan yang dapat diaudit diaktifkan. datetime2 Ya
sequence_number Melacak urutan rekaman dalam satu catatan audit yang terlalu besar agar pas di buffer tulis untuk audit. int Ya
action_id ID tindakan

Tips: Untuk menggunakan action_id sebagai predikat, itu harus dikonversi dari string karakter ke nilai numerik. Untuk informasi selengkapnya, lihat Memfilter Audit SQL Server pada predikat action_id/class_type.
varchar(4) Ya
berhasil Menunjukkan apakah tindakan yang memicu peristiwa berhasil. Untuk semua peristiwa selain peristiwa masuk, ini hanya melaporkan apakah pemeriksaan izin berhasil atau gagal, bukan operasi.
- 1 = Berhasil
- 0 = Gagal
bit Ya
permission_bitmask Dalam beberapa tindakan, ini adalah izin yang diberikan, ditolak, atau dicabut. varbinary(16) No
is_column_permission Bendera yang menunjukkan apakah ini adalah izin tingkat kolom. Mengembalikan 0 saat permission_bitmask = 0.
- 1 = Benar
- 0 = False
bit No
session_id ID sesi tempat peristiwa terjadi. smallint Ya
server_principal_id ID konteks masuk tempat tindakan dilakukan. int Ya
database_principal_id ID konteks pengguna database tempat tindakan dilakukan. Mengembalikan 0 jika ini tidak berlaku. Misalnya, operasi server. int No
target_server_principal_id Perwakilan server tempat operasi GRANT/DENY/REVOKE dilakukan. Mengembalikan 0 jika tidak berlaku. int Ya
target_database_principal_id Prinsipal database tempat operasi GRANT/DENY/REVOKE dilakukan. Mengembalikan 0 jika tidak berlaku. int No
object_id ID entitas tempat audit terjadi. Ini termasuk:
objek server
database
objek database
objek skema
Mengembalikan 0 jika entitas adalah Server itu sendiri atau jika audit tidak dilakukan pada tingkat objek. Misalnya, Autentikasi.
int No
class_type Jenis entitas yang dapat diaudit tempat audit terjadi. varchar(2) Ya
session_server_principal_name Perwakilan server untuk sesi tersebut. nama sysname Ya
server_principal_name Login saat ini. nama sysname Ya
server_principal_sid SID login saat ini. varbinary(85) Ya
database_principal_name Pengguna saat ini. nama sysname No
target_server_principal_name Target login tindakan. Mengembalikan NULL jika tidak berlaku. nama sysname No
target_server_principal_sid SID login target. Mengembalikan NULL jika tidak berlaku. varbinary(85) No
target_database_principal_name Targetkan pengguna tindakan. Mengembalikan NULL jika tidak berlaku. nama sysname No
server_instance_name Nama instans server tempat audit terjadi. Format server\instance standar digunakan. nama sysname Ya
database_name Konteks database tempat tindakan terjadi. Dapat diubah ke null. Mengembalikan NULL untuk audit yang terjadi di tingkat server. nama sysname No
schema_name Konteks skema di mana tindakan terjadi. nama sysname No
object_name Nama entitas tempat audit terjadi. Ini termasuk:
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.
nama sysname No
statement Pernyataan TSQL jika ada. Mengembalikan NULL jika tidak berlaku. nvarchar(4000) No
additional_information Informasi unik yang hanya berlaku untuk satu peristiwa dikembalikan sebagai XML. Beberapa tindakan yang dapat diaudit berisi informasi semacam ini.

Satu tingkat tumpukan TSQL akan ditampilkan dalam format XML untuk tindakan yang memiliki tumpukan TSQL yang terkait dengannya. Format XML akan menjadi:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Bingkai nest_level menunjukkan tingkat berlapis bingkai saat ini. Nama modul diwakili dalam format tiga bagian (database_name, schema_name, dan object_name). Nama modul akan diurai untuk meloloskan karakter xml yang tidak valid seperti '\<', , '>''/', '_x'. Mereka akan lolos sebagai _xHHHH\_. HHHH adalah singkatan dari empat digit kode heksadesimal UCS-2 untuk karakter
Dapat diubah ke null. Mengembalikan NULL ketika tidak ada informasi tambahan yang dilaporkan oleh peristiwa.
nvarchar(4000) No
file_name Jalur dan nama file log audit tempat rekaman berasal. varchar(260) Ya
audit_file_offset Berlaku untuk: SQL Server saja

Offset buffer dalam file yang berisi catatan audit.
bigint No
user_defined_event_id Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru, Azure SQL Database, dan SQL Managed Instance

ID peristiwa yang ditentukan pengguna diteruskan sebagai argumen ke sp_audit_writeNULL untuk peristiwa sistem (default) dan nonzero untuk peristiwa yang ditentukan pengguna. Untuk informasi selengkapnya, lihat sp_audit_write (Transact-SQL).
smallint No
user_defined_information Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru, Azure SQL Database, dan SQL Managed Instance

Digunakan untuk merekam informasi tambahan yang ingin dicatat pengguna dalam log audit dengan menggunakan prosedur tersimpan sp_audit_write .
nvarchar(4000) No
audit_schema_version Selalu 1 int Ya
sequence_group_id Berlaku untuk: SQL Server saja

Pengidentifikasi unik
varbinary(85) No
transaction_id Berlaku untuk: SQL Server saja (Dimulai dengan 2016)

Pengidentifikasi unik untuk mengidentifikasi beberapa peristiwa audit dalam satu transaksi
bigint No
client_ip Berlaku untuk: Azure SQL Database + SQL Server (Dimulai dengan 2017)

IP sumber aplikasi klien
nvarchar(128) No
application_name Berlaku untuk: Azure SQL Database + SQL Server (Dimulai dengan 2017)

Nama aplikasi klien yang menjalankan pernyataan yang menyebabkan peristiwa audit
nvarchar(128) No
duration_milliseconds Berlaku untuk: Azure SQL Database dan SQL Managed Instance

Durasi eksekusi kueri dalam milidetik
bigint No
response_rows Berlaku untuk: Azure SQL Database dan SQL Managed Instance

Jumlah baris yang dikembalikan dalam tataan hasil.
bigint No
affected_rows Berlaku untuk: Hanya Azure SQL Database

Jumlah baris yang terpengaruh oleh pernyataan yang dijalankan.
bigint No
connection_id Berlaku untuk: Azure SQL Database dan SQL Managed Instance

ID koneksi di server
GUID No
data_sensitivity_information Berlaku untuk: Hanya Azure SQL Database

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
nvarchar(4000) No
host_name Nama host koneksi klien nvarchar(128) No
session_context Informasi konteks sesi untuk koneksi nvarchar(4000) No
client_tls_version Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nomor versi TLS yang digunakan oleh koneksi klien
int No
client_tls_version_name Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nama versi TLS yang digunakan oleh koneksi klien
nvarchar(128) No
database_transaction_id Pengidentifikasi transaksi database bigint No
ledger_start_sequence_number Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nomor urutan mulai ledger untuk operasi ledger
bigint No
external_policy_permissions_checked Izin kebijakan eksternal yang diperiksa selama operasi nvarchar(4000) No

Keterangan

Beberapa tindakan tidak mengisi nilai kolom karena mungkin tidak dapat diterapkan ke tindakan.

Audit SQL Server menyimpan 4.000 karakter data untuk bidang karakter dalam catatan audit. Ketika nilai additional_information dan pernyataan yang dikembalikan dari tindakan yang dapat diaudit mengembalikan lebih dari 4000 karakter, kolom sequence_number digunakan untuk menulis beberapa rekaman ke dalam laporan audit untuk satu tindakan audit untuk merekam data ini. Prosesnya adalah sebagai berikut:

  • Kolom pernyataan dibagi menjadi 4.000 karakter.

  • Audit SQL Server menulis sebagai baris pertama untuk catatan audit dengan data parsial. Semua bidang lainnya diduplikasi di setiap baris.

  • Nilai sequence_number dinaikkan.

  • Proses ini diulang hingga semua data direkam.

Anda dapat menyambungkan data dengan membaca baris secara berurutan menggunakan nilai sequence_number , dan kolom event_Time, action_id , dan session_id untuk mengidentifikasi tindakan.