Membuat sesi peristiwa dengan target event_file di Azure Storage
Berlaku untuk: Azure SQL Database Azure SQL Managed Instance
Langkah-langkah tingkat tinggi dalam panduan ini adalah:
- Buat akun Azure Storage, atau temukan akun yang sesuai untuk digunakan.
- Buat kontainer di akun penyimpanan ini.
- Berikan Mesin Database akses yang diperlukan ke kontainer menggunakan penetapan peran RBAC, atau token SAS.
- Buat kredensial di database atau instans terkelola tempat Anda membuat sesi peristiwa.
- Membuat, memulai, dan menggunakan sesi peristiwa.
Membuat kontainer dan akun Azure Storage
Untuk deskripsi terperinci tentang cara membuat akun penyimpanan di Azure Storage, lihat Membuat akun penyimpanan. Anda mempelajari cara membuat akun penyimpanan menggunakan portal Azure, PowerShell, Azure SQL, templat ARM, atau templat Bicep.
Kami menyarankan Anda menggunakan akun yang:
Standard general-purpose v2
Adalah akun.- Memiliki jenis redundansi yang cocok dengan redundansi database Azure SQL, kumpulan elastis, atau instans terkelola tempat sesi peristiwa dibuat.
- Untuk sumber daya Azure SQL yang berlebihan secara lokal, gunakan LRS, GRS, atau RA-GRS. Untuk sumber daya Azure SQL zona-redundan , gunakan ZRS, GZRS, atau RA-GZRS. Untuk informasi lebih lanjut, lihat Redundansi Azure Storage.
Hot
Menggunakan tingkat akses blob.- Berada di wilayah Azure yang sama dengan database Azure SQL, kumpulan elastis, atau instans terkelola.
Selanjutnya, buat kontainer di akun penyimpanan ini menggunakan portal Azure. Anda juga dapat membuat kontainer menggunakan PowerShell, atau menggunakan Azure CLI.
Perhatikan nama akun penyimpanan dan kontainer yang Anda buat. Anda akan menggunakannya dalam langkah-langkah berikut.
Memberikan akses ke kontainer
Untuk membaca dan menulis data peristiwa, Mesin Database memerlukan akses khusus ke kontainer. Anda dapat memberikan akses ini dengan salah satu dari dua cara, tergantung pada pilihan jenis autentikasi Anda:
Jika menggunakan identitas terkelola dengan autentikasi Microsoft Entra, Anda menetapkan peran RBAC Kontributor Data Blob Penyimpanan untuk kontainer ke identitas terkelola server logis Azure SQL atau instans terkelola Azure SQL.
Catatan
Penggunaan identitas terkelola dengan sesi peristiwa yang diperluas sedang dalam pratinjau.
Jika menggunakan autentikasi berbasis rahasia, Anda membuat token SAS untuk kontainer.
Untuk menggunakan jenis autentikasi ini, opsi Izinkan akses kunci akun penyimpanan harus diaktifkan. Untuk informasi selengkapnya, lihat Mencegah otorisasi Kunci Bersama untuk akun Azure Storage.
Memberikan akses menggunakan identitas terkelola
Di portal Azure, navigasikan ke halaman Identitas server logis Azure SQL atau instans terkelola Azure SQL Anda, dan pastikan identitas terkelola ditetapkan. Untuk informasi selengkapnya, lihat Identitas terkelola di Microsoft Entra untuk Azure SQL.
Di portal Azure, navigasikan ke kontainer penyimpanan tempat Anda ingin menyimpan data peristiwa. Pada halaman Kontrol Akses (IAM), pilih Tambahkan untuk menetapkan peran RBAC Kontributor Data Blob Penyimpanan ke identitas terkelola server logis atau instans terkelola SQL.
Jika server logis atau instans terkelola SQL mengaktifkan identitas terkelola yang ditetapkan sistemnya, tetapkan peran ke identitas tersebut. Jika identitas yang ditetapkan sistem dinonaktifkan, tetapi ada satu atau beberapa identitas yang ditetapkan pengguna, tetapkan peran ke identitas yang ditetapkan pengguna yang ditetapkan sebagai identitas utama.
Untuk informasi selengkapnya, lihat Menetapkan peran Azure untuk akses ke data blob.
Buat kredensial untuk menginstruksikan Mesin Database untuk mengautentikasi ke Azure Storage menggunakan identitas terkelola untuk URL kontainer tertentu.
Buat kredensial cakupan database. Menggunakan alat klien seperti SQL Server Management Studio atau ADS, buka jendela kueri baru, sambungkan ke database tempat Anda membuat sesi peristiwa, dan tempelkan batch T-SQL berikut. Pastikan Anda tersambung ke database pengguna Anda, dan bukan ke
master
database.Catatan
Menjalankan batch T-SQL berikut memerlukan
CONTROL
izin database, yang dipegang oleh pemilik database (dbo
), oleh anggotadb_owner
peran database, dan oleh administrator server logis./* (Re-)create a database scoped credential. The name of the credential must match the URL of the blob container. */ IF EXISTS ( SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* When using managed identity, the credential does not contain a secret */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'MANAGED IDENTITY';
Sebelum menjalankan batch ini, lakukan perubahan berikut:
- Dalam ketiga kemunculan
https://<storage-account-name>.blob.core.windows.net/<container-name>
, ganti<storage-account-name>
dengan nama akun penyimpanan Anda, dan ganti<container-name>
dengan nama kontainer Anda.
- Dalam ketiga kemunculan
Memberikan akses menggunakan token SAS
Di portal Azure, navigasikan ke akun penyimpanan dan kontainer yang Anda buat. Pilih kontainer, dan navigasi ke Pengaturan > Token akses bersama.
Token SAS harus memenuhi persyaratan berikut:
- Izin diatur ke
Read
,Write
,Delete
,List
. - Waktu mulai dan Waktu kedaluwarsa harus mencakup masa pakai sesi peristiwa. Token SAS yang Anda buat hanya berfungsi dalam interval waktu ini.
- Tidak memiliki batasan alamat IP.
Pilih tombol Buat token SAS dan URL. Token SAS ada di kotak token SAS Blob. Anda dapat menyalinnya untuk digunakan di langkah berikutnya.
Penting
Token SAS menyediakan akses baca dan tulis ke kontainer ini. Perlakukan seperti yang Akan Anda perlakukan kata sandi atau rahasia lainnya.
- Izin diatur ke
Buat kredensial untuk menyimpan token SAS.
Simpan token SAS dalam kredensial cakupan database. Menggunakan alat klien seperti SQL Server Management Studio atau ADS, buka jendela kueri baru, sambungkan ke database tempat Anda membuat sesi peristiwa, dan tempelkan batch T-SQL berikut. Pastikan Anda tersambung ke database pengguna Anda, dan bukan ke
master
database.Catatan
Menjalankan batch T-SQL berikut memerlukan
CONTROL
izin database, yang dipegang oleh pemilik database (dbo
), oleh anggotadb_owner
peran database, dan oleh administrator server logis./* Create a master key to protect the secret of the credential */ IF NOT EXISTS ( SELECT 1 FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##' ) CREATE MASTER KEY; /* (Re-)create a database scoped credential. The name of the credential must match the URL of the blob container. */ IF EXISTS ( SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The secret is the SAS token for the container. The Read, Write, and List permissions are set. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<sas-token>';
Sebelum menjalankan batch ini, buat perubahan berikut:
- Dalam ketiga kemunculan
https://<storage-account-name>.blob.core.windows.net/<container-name>
, ganti<storage-account-name>
dengan nama akun penyimpanan Anda, dan ganti<container-name>
dengan nama kontainer Anda. SECRET
Dalam klausa, ganti<sas-token>
dengan token SAS yang Anda salin di langkah sebelumnya.
- Dalam ketiga kemunculan
Membuat, memulai, dan menghentikan sesi peristiwa
Setelah kredensial dibuat, Anda dapat membuat sesi peristiwa. Tidak seperti membuat kredensial, membuat sesi peristiwa tidak memerlukan CONTROL
izin. Setelah kredensial dibuat, Anda dapat membuat sesi peristiwa meskipun Anda memiliki izin yang lebih terbatas. Lihat izin untuk izin tertentu yang diperlukan.
Untuk membuat sesi peristiwa baru di SSMS, perluas node Extended Events . Simpul ini berada di bawah folder database di Azure SQL Database, dan di bawah folder Manajemen di Azure SQL Managed Instance. Klik kanan pada folder Sesi , dan pilih Sesi Baru.... Pada halaman Umum , masukkan nama untuk sesi, yang ada example-session
dalam contoh ini. Pada halaman Peristiwa , pilih satu atau beberapa peristiwa untuk ditambahkan ke sesi. Dalam contoh ini, kami memilih sql_batch_starting
peristiwa.
Pada halaman Penyimpanan Data, pilih event_file
sebagai jenis target, dan tempelkan URL kontainer penyimpanan di kotak URL Penyimpanan. Ketik garis miring (/
) di akhir URL ini, diikuti dengan nama file (blob). Dalam contoh kami, nama blob adalah example-session.xel
, dan seluruh URL adalah https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel
.
Catatan
Untuk SQL Managed Instance, alih-alih menempelkan URL kontainer penyimpanan di halaman Penyimpanan data , gunakan tombol Skrip untuk membuat skrip T-SQL sesi. Tentukan URL kontainer sebagai nilai untuk filename
argumen, mirip dengan contoh SQL Managed Instance di bawah ini, dan jalankan skrip untuk membuat sesi.
Sekarang setelah sesi dikonfigurasi, Anda dapat memilih tombol Skrip untuk membuat skrip T-SQL sesi, untuk menyimpannya untuk nanti. Berikut adalah skrip untuk sesi contoh kami:
CREATE EVENT SESSION [example-session] ON DATABASE
ADD EVENT sqlserver.sql_batch_starting
ADD TARGET package0.event_file(SET filename=N'https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel')
GO
Pilih OK untuk membuat sesi.
Di Object Explorer, perluas folder Sesi untuk melihat sesi peristiwa yang Anda buat. Secara default, sesi tidak dimulai saat dibuat. Untuk memulai sesi, klik kanan pada nama sesi, dan pilih Mulai Sesi. Anda nantinya dapat menghentikannya dengan memilih Hentikan Sesi secara serupa, setelah sesi berjalan.
Karena batch T-SQL dijalankan dalam database ini atau instans terkelola, sesi menulis peristiwa ke example-session.xel
blob dalam kontainer penyimpanan.
Untuk menghentikan sesi, klik kanan di Object Explorer, dan pilih Hentikan Sesi.
Menampilkan data peristiwa
Anda dapat melihat data peristiwa di antarmuka pengguna penampil peristiwa SQL Server Management Studio (SSMS), tempat Anda dapat menggunakan filter dan agregasi untuk menganalisis data yang Anda ambil. Untuk informasi selengkapnya tentang menggunakan penampil peristiwa di SSMS, lihat Menampilkan data peristiwa di SSMS.
Mengunduh file xel dari penyimpanan Azure
Tip
Jika Anda menggunakan SSMS v19.2 atau yang lebih baru, Anda tidak perlu mengunduh xel
file seperti yang dijelaskan di bagian ini. Dalam versi ini, SSMS membaca xel
file untuk setiap sesi langsung dari penyimpanan Azure. Untuk informasi selengkapnya, lihat blog Meningkatkan Acara yang Diperluas di Azure SQL .
xel
Unduh blob untuk sesi dari kontainer penyimpanan dan simpan sebagai file lokal. Di portal Azure, temukan akun penyimpanan yang Anda gunakan, pilih Kontainer di bawah Penyimpanan data, dan pilih kontainer yang Anda buat untuk sesi peristiwa Anda. Blob untuk sesi memiliki nama sesi sebagai bagian pertama dari namanya, dengan akhiran numerik. Pilih elipsis (...) untuk menampilkan menu konteks untuk blob, dan pilih Unduh.
Anda dapat menginstal Azure Storage Explorer untuk mengunduh beberapa xel
blob dalam satu operasi.
xel
Setelah file diunduh, buka di SSMS. Pada menu utama SSMS, buka File dan pilih Buka. Jika Anda memiliki satu xel
file, pilih File... dan telusuri ke file yang Anda unduh. Jika Anda memiliki beberapa xel
file yang dihasilkan oleh sesi peristiwa yang sama (dikenal sebagai file rollover), Anda dapat menggunakan dialog Gabungkan File Peristiwa yang Diperluas... untuk membuka semuanya di penampil peristiwa.
Menampilkan data peristiwa menggunakan T-SQL
Untuk membaca data sesi peristiwa menggunakan T-SQL, gunakan fungsi sys.fn_xe_file_target_read_file(). Untuk menggunakan fungsi ini dalam database atau instans terkelola yang berbeda dari fungsi tempat sesi peristiwa dibuat, berikan akses ke Mesin Database pada kontainer penyimpanan dengan blob data peristiwa.
Untuk panduan yang lebih rinci, lihat Membuat sesi acara di SSMS.