Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:Azure SQL Database
Azure SQL Managed Instance
SQL database di Fabric
Untuk pengantar Extended Events, lihat:
Rangkaian fitur, fungsionalitas, dan skenario penggunaan untuk Extended Events di Azure SQL Database, database SQL di Fabric, dan Azure SQL Managed Instance mirip dengan apa yang tersedia di SQL Server. Perbedaan utama adalah:
- Di Azure SQL Database, database SQL di Fabric, dan Azure SQL Managed Instance,
event_filetarget selalu menggunakan blob di Azure Storage, bukan file pada disk.- Di SQL Server,
event_filetarget dapat menggunakan file pada disk atau blob di Azure Storage.
- Di SQL Server,
- Di Azure SQL Database dan database SQL di Fabric, sesi peristiwa selalu dilingkup database. Ini berarti bahwa:
- Sesi peristiwa dalam satu database tidak dapat mengumpulkan peristiwa dari database lain.
- Peristiwa harus terjadi dalam konteks database pengguna untuk disertakan dalam sesi.
- Di Azure SQL Managed Instance, Anda dapat membuat sesi peristiwa cakupan server dan cakupan database. Sebaiknya gunakan sesi peristiwa cakupan server untuk sebagian besar skenario.
Get started
Ada dua contoh panduan untuk membantu Anda memulai Extended Events dengan cepat.
-
Buat sesi acara dengan target event_file di Azure Storage. Contoh ini menunjukkan kepada Anda cara mengambil data peristiwa dalam file (blob) di Azure Storage menggunakan
event_filetarget, dan menyertakan panduan pemecahan masalah untuk kesalahan umum. Gunakan ini jika Anda perlu mempertahankan data peristiwa yang diambil, atau jika Anda ingin menggunakan penampil peristiwa di SQL Server Management Studio (SSMS) untuk menganalisis data yang diambil. -
Buat sesi event dengan target ring_buffer yang berada di memori. Contoh ini menunjukkan kepada Anda cara mengambil peristiwa terbaru dari sesi peristiwa dalam memori menggunakan
ring_buffertarget. Gunakan ini sebagai cara cepat untuk melihat peristiwa terbaru selama investigasi ad hoc atau pemecahan masalah, tanpa harus menyimpan data peristiwa yang diambil.
Extended Events dapat digunakan untuk memantau replika baca-saja. Untuk informasi selengkapnya, lihat Membaca kueri pada replika.
Praktik terbaik
Adopsi praktik terbaik berikut untuk menggunakan Extended Events dengan aman, andal, dan tanpa memengaruhi kesehatan mesin database dan performa beban kerja.
- Jika Anda menggunakan
event_filetarget:- Bergantung pada peristiwa yang ditambahkan ke sesi, file yang dihasilkan oleh
event_filetarget mungkin berisi data sensitif. Tinjau penetapan peran RBAC dengan cermat dan daftar kontrol akses (ACL) pada akun penyimpanan dan kontainer, termasuk akses yang diwariskan, untuk menghindari pemberian akses baca yang tidak perlu. Ikuti prinsip hak istimewa paling sedikit. - Gunakan akun penyimpanan di wilayah Azure yang sama dengan database atau instans terkelola tempat Anda membuat sesi peristiwa.
- Sejajarkan redundansi akun penyimpanan dengan redundansi database, kumpulan elastis, atau instans terkelola. Untuk sumber daya yang berlebihan secara lokal, gunakan LRS, GRS, atau RA-GRS. Untuk sumber daya zona redundan , gunakan ZRS, GZRS, atau RA-GZRS. Lihat Redundansi Azure Storage untuk detailnya.
- Jangan gunakan tingkat akses blob selain .
Hot - Jangan aktifkan namespace hierarkis untuk akun penyimpanan.
- Bergantung pada peristiwa yang ditambahkan ke sesi, file yang dihasilkan oleh
- Jika Anda ingin membuat sesi peristiwa yang terus berjalan yang dimulai secara otomatis setelah setiap Mesin Database dimulai ulang (misalnya, setelah failover atau peristiwa pemeliharaan), sertakan opsi
STARTUP_STATE = ONsesi peristiwa dalam pernyataan atauCREATE EVENT SESSIONAndaALTER EVENT SESSION. - Sebaliknya, gunakan
STARTUP_STATE = OFFuntuk sesi peristiwa jangka pendek seperti yang digunakan dalam pemecahan masalah ad hoc. - Di Azure SQL Database, jangan membaca peristiwa kebuntuan dari sesi peristiwa bawaan
dl. Jika ada sejumlah besar peristiwa kebuntuan yang dikumpulkan, membacanya dengan fungsi sys.fn_xe_file_target_read_file() dapat menyebabkan kesalahan di luar memori dalammasterdatabase. Ini dapat memengaruhi pemrosesan login dan mengakibatkan pemadaman aplikasi. Untuk cara yang direkomendasikan untuk memantau kebuntuan, lihat Mengumpulkan grafik kebuntuan di Azure SQL Database dengan Acara yang Diperluas.
Target sesi peristiwa
Untuk informasi selengkapnya tentang target Extended Events yang didukung di Azure SQL Database, database SQL di Fabric, Azure SQL Managed Instance, dan SQL Server, lihat Target untuk Kejadian yang Diperluas.
perbedaan Transact-SQL
Saat Anda menjalankan pernyataan CREATE EVENT SESSION, ALTER EVENT SESSION, dan DROP EVENT SESSION di SQL Server dan di Azure SQL Managed Instance, Anda menggunakan klausul .ON SERVER Di Azure SQL Database, Anda menggunakan klausul sebagai gantinya ON DATABASE , karena dalam sesi peristiwa Azure SQL Database tercakup dalam database.
Tampilan katalog Acara yang Diperluas
Extended Events menyediakan beberapa tampilan katalog. Tampilan katalog memberi tahu Anda tentang metadata atau definisi sesi peristiwa. Tampilan ini tidak mengembalikan informasi tentang instans sesi peristiwa aktif.
Untuk daftar tampilan katalog untuk setiap platform, lihat Tampilan Katalog Peristiwa Yang Diperluas.
Tampilan manajemen dinamis Extended Events
Extended Events menyediakan beberapa tampilan manajemen dinamis (DMV). DMV mengembalikan informasi tentang sesi peristiwa yang dimulai .
Untuk daftar Tampilan Manajemen Dinamis (DMV) untuk setiap platform, lihat Tampilan Manajemen Dinamis Peristiwa yang Diperluas.
DMV umum
Ada DMV Extended Events tambahan yang umum untuk Azure SQL Database, Azure SQL Managed Instance, dan SQL Server:
Peristiwa, tindakan, dan target yang tersedia
Anda bisa mendapatkan peristiwa, tindakan, dan target yang tersedia menggunakan kueri ini:
SELECT o.object_type,
p.name AS package_name,
o.name AS db_object_name,
o.description AS db_obj_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE o.object_type IN ('action','event','target')
ORDER BY o.object_type,
p.name,
o.name;
Permissions
Lihat izin untuk izin terperinci menurut platform.
Otorisasi dan kontrol kontainer penyimpanan
Saat Anda menggunakan event_file target dengan blob Azure Storage, Mesin Database yang menjalankan sesi peristiwa harus memiliki akses khusus ke kontainer blob. Anda dapat memberikan akses ini dengan salah satu cara berikut:
Tetapkan peran RBAC Kontributor Data Blob Penyimpanan ke identitas terkelola server logis Azure SQL atau instans terkelola Azure SQL pada kontainer, dan buat kredensial untuk menginstruksikan Mesin Database untuk menggunakan identitas terkelola untuk autentikasi.
Sebagai alternatif untuk menetapkan peran RBAC Kontributor Data Blob Penyimpanan, Anda dapat menetapkan tindakan RBAC berikut:
Namespace Action Microsoft.Storage/storageAccounts/blobServices/containers/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/writeBuat token SAS untuk kontainer, dan simpan token dalam kredensial.
Di Azure SQL Database, Anda harus menggunakan kredensial cakupan database. Di Azure SQL Managed Instance dan SQL Server, gunakan kredensial cakupan server.
Token SAS yang Anda buat untuk kontainer Azure Storage Anda harus memenuhi persyaratan berikut:
-
rwdlMemiliki izin (Read,Write,Delete,List). - Memiliki waktu mulai dan waktu kedaluwarsa yang mencakup masa pakai sesi peristiwa.
- Tidak memiliki batasan alamat IP.
-
Tata kelola sumber daya
Di Azure SQL Database, konsumsi memori oleh sesi peristiwa yang diperluas dikontrol secara dinamis oleh Mesin Database untuk meminimalkan ketidakcocokan sumber daya.
Ada batasan memori yang tersedia untuk sesi peristiwa:
- Dalam database tunggal, total memori sesi dibatasi hingga 128 MB.
- Dalam kumpulan elastis, database individual dibatasi oleh batas database tunggal, dan totalnya tidak boleh melebihi 512 MB.
Jika Anda menerima pesan kesalahan yang mereferensikan batas memori, tindakan korektif yang dapat Anda lakukan adalah:
- Kurangi jumlah sesi kejadian yang dijalankan secara bersamaan.
- Menggunakan
CREATEpernyataan danALTERuntuk sesi peristiwa, kurangi jumlah memori yang Anda tentukan dalamMAX_MEMORYklausul untuk sesi tersebut.
Note
Di Acara yang Diperluas, MAX_MEMORY klausul muncul dalam dua konteks: saat membuat atau mengubah sesi (pada tingkat sesi), dan saat menggunakan ring_buffer target (pada tingkat target). Batas di atas berlaku untuk memori tingkat sesi.
Ada batasan jumlah sesi peristiwa yang dimulai di Azure SQL Database:
- Dalam database tunggal, batasnya adalah 100.
- Dalam kumpulan elastis, batasnya adalah 100 sesi cakupan database per kumpulan.
Di kumpulan elastis yang padat, memulai sesi peristiwa baru yang diperluas mungkin gagal karena kendala memori bahkan ketika jumlah total sesi yang dimulai di bawah 100.
Untuk menemukan total memori yang digunakan oleh sesi peristiwa, jalankan kueri berikut saat tersambung ke database tempat sesi peristiwa dimulai:
SELECT name AS session_name,
total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;
Untuk menemukan total memori sesi peristiwa untuk kumpulan elastis, kueri ini perlu dijalankan di setiap database di kumpulan.