

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan acara diperpanjang dengan Amazon RDS untuk Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

Anda dapat menggunakan peristiwa yang diperpanjang di Microsoft SQL Server untuk menangkap informasi debugging dan pemecahan masalah untuk Amazon RDS untuk Server. SQL Peristiwa yang diperluas menggantikan SQL Trace dan Server Profiler, yang telah tidak digunakan lagi oleh Microsoft. Peristiwa diperpanjang mirip dengan jejak profiler tetapi dengan kontrol yang lebih rinci pada peristiwa yang dilacak. Acara yang diperpanjang didukung untuk SQL Server versi 2016 dan yang lebih baru di AmazonRDS. Untuk informasi selengkapnya, lihat [Extended events overview](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events) di dokumentasi Microsoft.

Peristiwa yang diperpanjang diaktifkan secara otomatis untuk pengguna dengan hak istimewa pengguna utama di Amazon RDS untuk SQL Server.

**Topics**
+ [Batasan dan rekomendasi](#SQLServer.ExtendedEvents.Limits)
+ [Mengkonfigurasi event yang diperpanjang RDS untuk Server SQL](#SQLServer.ExtendedEvents.Config)
+ [Pertimbangan untuk deployment multi-AZ](#SQLServer.ExtendedEvents.MAZ)
+ [Melakukan kueri file peristiwa diperpanjang](#SQLServer.ExtendedEvents.Querying)

## Batasan dan rekomendasi
<a name="SQLServer.ExtendedEvents.Limits"></a>

Saat menggunakan event yang diperpanjang di RDS for SQL Server, batasan berikut berlaku:
+ Peristiwa diperpanjang didukung hanya untuk Edisi Perusahaan dan Standar.
+ Anda tidak dapat mengubah sesi peristiwa diperpanjang default.
+ Pastikan untuk mengatur mode partisi memori sesi ke `NONE`.
+ Mode retensi peristiwa sesi dapat berupa `ALLOW_SINGLE_EVENT_LOSS` atau `ALLOW_MULTIPLE_EVENT_LOSS`.
+ Penelusuran Acara untuk target Windows (ETW) tidak didukung.
+ Pastikan bahwa target file berada di direktori `D:\rdsdbdata\log`.
+ Untuk target pencocokan pasangan, atur properti `respond_to_memory_pressure` ke `1`.
+ Memori target ring buffer tidak boleh lebih besar dari 4 MB.
+ Tindakan berikut tidak didukung:
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ Peristiwa `rpc_completed` didukung pada versi berikut dan yang lebih baru: 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2.

## Mengkonfigurasi event yang diperpanjang RDS untuk Server SQL
<a name="SQLServer.ExtendedEvents.Config"></a>

On RDS for SQL Server, Anda dapat mengonfigurasi nilai parameter tertentu dari sesi acara yang diperpanjang. Tabel berikut menjelaskan parameter yang dapat dikonfigurasi ini.


| Nama parameter | Deskripsi | RDSnilai default | Nilai minimum | Nilai maksimum | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | Tentukan jumlah maksimum memori untuk dialokasikan untuk sesi untuk buffering peristiwa. Nilai ini sesuai dengan pengaturan max\$1memory sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1event\$1size | Menentukan ukuran memori maksimum yang diperbolehkan untuk peristiwa besar. Nilai ini sesuai dengan pengaturan max\$1event\$1size sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1dispatch\$1latency | Tentukan jumlah waktu peristiwa di-buffer dalam memori sebelum dikirim ke target sesi peristiwa diperpanjang. Nilai ini sesuai dengan pengaturan max\$1dispatch\$1latency sesi peristiwa. | 30 detik | 1 detik | 30 detik | 
| xe\$1file\$1target\$1size | Tentukan ukuran maksimum target file. Nilai ini sesuai dengan pengaturan max\$1file\$1size target file. | 100 MB | 10 MB | 1 GB | 
| xe\$1file\$1retention | Menentukan waktu retensi dalam hari untuk file yang dihasilkan oleh target file sesi peristiwa. | 7 hari | 0 hari | 7 hari | 

**catatan**  
Pengaturan `xe_file_retention` ke nol menyebabkan file.xel dihapus secara otomatis setelah kunci pada file-file ini dirilis oleh SQL Server. Kunci dilepaskan setiap kali file .xel mencapai batas ukuran yang ditetapkan dalam `xe_file_target_size`.

Anda dapat menggunakan prosedur tersimpan `rdsadmin.dbo.rds_show_configuration` untuk menunjukkan nilai-nilai parameter saat ini. Misalnya, gunakan SQL pernyataan berikut untuk melihat pengaturan saat ini`xe_session_max_memory`.

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

Anda dapat menggunakan prosedur `rdsadmin.dbo.rds_set_configuration` yang disimpan untuk memodifikasinya. Misalnya, gunakan SQL pernyataan berikut untuk mengatur `xe_session_max_memory` ke 4 MB.

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

## Pertimbangan untuk deployment multi-AZ
<a name="SQLServer.ExtendedEvents.MAZ"></a>

Ketika Anda membuat sesi peristiwa diperpanjang pada instans DB primer, sesi tersebut tidak menyebar ke replika siaga. Anda dapat melakukan failover dan membuat sesi peristiwa diperpanjang pada instans DB primer yang baru. Atau Anda dapat menghapus dan kemudian menambahkan kembali konfigurasi multi-AZ untuk menyebarkan sesi peristiwa diperpanjang ke replika siaga. RDSmenghentikan semua sesi acara perpanjangan nondefault pada replika siaga, sehingga sesi ini tidak menggunakan sumber daya saat siaga. Karena ini, setelah replika siaga menjadi instans DB primer, pastikan untuk secara manual memulai sesi peristiwa diperpanjang pada instans primer baru.

**catatan**  
Pendekatan ini berlaku untuk Always On Availability Group dan Database Mirroring.

Anda juga dapat menggunakan pekerjaan Agen SQL Server untuk melacak replika siaga dan memulai sesi jika siaga menjadi yang utama. Misalnya, gunakan kueri berikut dalam langkah pekerjaan Agen SQL Server Anda untuk memulai ulang sesi acara pada instans DB utama.

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

Kueri ini memulai ulang sesi peristiwa `xe1` dan `xe2` pada instans DB primer jika sesi ini berada dalam keadaan berhenti. Anda juga dapat menambahkan jadwal dengan interval yang nyaman untuk kueri ini.

## Melakukan kueri file peristiwa diperpanjang
<a name="SQLServer.ExtendedEvents.Querying"></a>

Anda dapat menggunakan SQL Server Management Studio atau `sys.fn_xe_file_target_read_file` fungsi untuk melihat data dari peristiwa yang diperluas yang menggunakan target file. Untuk informasi selengkapnya tentang fungsi ini, lihat [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-) dalam dokumentasi](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) Microsoft. SQL

Target file acara yang diperluas hanya dapat menulis file ke `D:\rdsdbdata\log` direktori RDS untuk SQL Server.

Sebagai contoh, gunakan SQL kueri berikut untuk mencantumkan konten semua file sesi acara diperpanjang yang namanya dimulai`xe`.

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```