

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

# Menggunakan peristiwa diperpanjang dengan server Amazon RDS for Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

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

Peristiwa diperpanjang diaktifkan secara otomatis untuk pengguna dengan hak pengguna master di Amazon RDS for SQL Server.

**Topics**
+ [Batasan dan rekomendasi](#SQLServer.ExtendedEvents.Limits)
+ [Mengonfigurasi peristiwa diperpanjang di RDS untuk SQL Server](#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 peristiwa diperpanjang di RDS untuk 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`.
+ Target Event Tracing for 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.

## Mengonfigurasi peristiwa diperpanjang di RDS untuk SQL Server
<a name="SQLServer.ExtendedEvents.Config"></a>

Pada RDS untuk SQL Server, Anda dapat mengonfigurasi nilai-nilai parameter tertentu dari sesi peristiwa diperpanjang. Tabel berikut menjelaskan parameter yang dapat dikonfigurasi ini.


| Nama parameter | Deskripsi | Nilai default RDS | Nilai minimum | Nilai maksimum | 
| --- | --- | --- | --- | --- | 
| xe\_session\_max\_memory | Tentukan jumlah maksimum memori untuk dialokasikan untuk sesi untuk buffering peristiwa. Nilai ini sesuai dengan pengaturan max\_memory sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\_session\_max\_event\_size | Menentukan ukuran memori maksimum yang diperbolehkan untuk peristiwa besar. Nilai ini sesuai dengan pengaturan max\_event\_size sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\_session\_max\_dispatch\_latency | Tentukan jumlah waktu peristiwa di-buffer dalam memori sebelum dikirim ke target sesi peristiwa diperpanjang. Nilai ini sesuai dengan pengaturan max\_dispatch\_latency sesi peristiwa. | 30 detik | 1 detik | 30 detik | 
| xe\_file\_target\_size | Tentukan ukuran maksimum target file. Nilai ini sesuai dengan pengaturan max\_file\_size target file. | 100 MB | 10 MB | 1 GB | 
| xe\_file\_retention | 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 pernyataan SQL berikut untuk melihat pengaturan `xe_session_max_memory` saat ini.

```
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 pernyataan SQL 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. RDS menghentikan semua sesi peristiwa diperpanjang non-default pada replika siaga, sehingga sesi ini tidak mengonsumsi sumber daya pada replika 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 SQL Server Agent untuk melacak replika siaga dan memulai sesi jika replika siaga menjadi replika utama. Misalnya, gunakan kueri berikut dalam langkah pekerjaan SQL Server Agent untuk memulai ulang sesi peristiwa pada instans DB primer.

```
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 fungsi `sys.fn_xe_file_target_read_file` untuk melihat data dari peristiwa diperpanjang yang menggunakan target file. Untuk informasi selengkapnya tentang fungsi ini, lihat [sys.fn\_xe\_file\_target\_read\_file (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) di dokumentasi Microsoft.

Target file peristiwa diperpanjang hanya dapat menulis file ke direktori `D:\rdsdbdata\log` pada RDS untuk SQL Server.

Misalnya, gunakan kueri SQL berikut untuk menyusun daftar dari konten semua file sesi peristiwa diperpanjang yang namanya dimulai dengan `xe`.

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