Membuat sesi peristiwa dengan target event_file di Azure Storage

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Langkah-langkah tingkat tinggi dalam panduan ini adalah:

  1. Membuat akun Azure Storage, atau menemukan akun yang sesuai untuk digunakan
  2. Buat kontainer di akun penyimpanan ini
  3. Buat token SAS dengan akses yang diperlukan untuk kontainer ini
  4. Membuat kredensial untuk menyimpan token SAS di database atau instans terkelola tempat Anda membuat sesi peristiwa
  5. 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:

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 gunakan.

Membuat token SAS

Mesin Database yang menjalankan sesi peristiwa memerlukan akses khusus ke kontainer penyimpanan. Anda memberikan akses ini dengan membuat token SAS untuk kontainer. Token ini harus memenuhi persyaratan berikut:

  • rwl Memiliki izin (Read, Write, ) List
  • Memiliki waktu mulai dan waktu kedaluwarsa yang mencakup masa pakai sesi peristiwa
  • Tidak memiliki batasan alamat IP

Di portal Azure, temukan akun penyimpanan dan kontainer yang Anda buat. Pilih kontainer, dan navigasikan ke token akses bersama Pengaturan>. Atur Izin ke Read, Write, List, dan atur tanggal dan waktu Mulai dan Kedaluwarsa . Token SAS yang Anda buat hanya berfungsi dalam interval waktu ini.

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.

Screenshot of the Shared Access Tokens screen for an Azure Storage container, with a generated SAS token for an example container.

Membuat kredensial untuk menyimpan token SAS

Di Azure SQL Database, Anda menggunakan kredensial cakupan database untuk menyimpan token SAS. Di Azure SQL Managed Instance, Anda menggunakan kredensial cakupan server.

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 anggota db_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://exampleaccount4xe.blob.core.windows.net/xe-example-container'
          )
    DROP DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container];

/*
The secret is the SAS token for the container. The Read, Write, and List permissions are set.
*/
CREATE DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'sp=rwl&st=2023-10-17T23:28:32Z&se=2023-10-18T07:28:32Z&spr=https&sv=2022-11-02&sr=c&sig=REDACTED';

Sebelum menjalankan batch ini, buat perubahan berikut:

  • Dalam ketiga kemunculan https://exampleaccount4xe.blob.core.windows.net/xe-example-container, ganti exampleaccount4xe dengan nama akun penyimpanan Anda, dan ganti xe-example-container dengan nama kontainer Anda.
  • Ganti seluruh string di antara tanda kutip tunggal dalam SECRET klausul dengan token SAS yang Anda salin di langkah sebelumnya.

Membuat, memulai, dan menghentikan sesi Peristiwa

Setelah kredensial dengan token SAS dibuat, Anda dapat membuat sesi peristiwa. Membuat sesi peristiwa tidak memerlukan CONTROL izin. Jika kredensial dengan token SAS yang benar sudah ada, Anda dapat membuat sesi peristiwa meskipun Anda memiliki sekumpulan 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.

Screenshot of the New Session SSMS dialog showing the event selection page with the sql_batch_starting event selected.

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://exampleaccount4xe.blob.core.windows.net/xe-example-container/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.

Screenshot of the New Session SSMS dialog showing the data storage selection page with an event_file target selected and an entered storage URL.

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://exampleaccount4xe.blob.core.windows.net/xe-example-container/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 xe-example-container 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, buat kredensial untuk memberi Mesin Database akses ke kontainer penyimpanan dengan blob peristiwa.

Untuk panduan yang lebih rinci, lihat Membuat sesi acara di SSMS.