

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

# Menggunakan pengambilan data perubahan untuk Amazon RDS for SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CDC"></a>

Amazon RDS mendukung pengambilan data perubahan (CDC) untuk instans DB yang menjalankan Microsoft SQL Server. CDC mencatat perubahan yang dilakukan terhadap data di tabel. CDC akan menyimpan metadata setiap perubahan, dan Anda dapat mengaksesnya nanti. Untuk informasi cara kerja CDC selengkapnya, lihat [Change data capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) dalam dokumentasi Microsoft. Sebelum menggunakan CDC dengan instans DB Amazon RDS, aktifkan CDC di basis data dengan menjalankan `msdb.dbo.rds_cdc_enable_db`. Setelah CDC diaktifkan, setiap pengguna yang merupakan `db_owner` basis data tersebut dapat mengaktifkan atau menonaktifkan CDC pada tabel di basis data tersebut.

**penting**  
Selama pemulihan, CDC akan dinonaktifkan. Semua metadata terkait akan otomatis dihapus dari basis data. Ini berlaku untuk pemulihan dan point-in-time pemulihan snapshot. Setelah melakukan salah satu jenis pemulihan ini, Anda dapat mengaktifkan ulang CDC dan menetapkan ulang tabel untuk melacak.

Untuk mengaktifkan CDC instans DB, jalankan prosedur tersimpan `msdb.dbo.rds_cdc_enable_db`.

```
1. exec msdb.dbo.rds_cdc_enable_db 'database_name'
```

Untuk menonaktifkan CDC instans DB, jalankan prosedur tersimpan `msdb.dbo.rds_cdc_disable_db`.

```
1. exec msdb.dbo.rds_cdc_disable_db 'database_name'
```

Untuk memberikan izin CDC kepada pengguna, gunakan prosedur berikut:

```
1. go
2. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_enable_db TO User1
3. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_disable_db TO User1
```

**Topics**
+ [Melacak tabel menggunakan pengambilan data perubahan](#Appendix.SQLServer.CommonDBATasks.CDC.tables)
+ [Pekerjaan pengambilan data perubahan](#Appendix.SQLServer.CommonDBATasks.CDC.jobs)
+ [Pengambilan data perubahan untuk instans Multi-AZ](#Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ)

## Melacak tabel menggunakan pengambilan data perubahan
<a name="Appendix.SQLServer.CommonDBATasks.CDC.tables"></a>

Setelah CDC diaktifkan di basis data, Anda dapat mulai melacak tabel tertentu. Anda dapat memilih tabel yang akan dilacak dengan menjalankan [sys.sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql).

```
 1. --Begin tracking a table
 2. exec sys.sp_cdc_enable_table   
 3.    @source_schema           = N'source_schema'
 4. ,  @source_name             = N'source_name'
 5. ,  @role_name               = N'role_name'
 6. 
 7. --The following parameters are optional:
 8.  
 9. --, @capture_instance       = 'capture_instance'
10. --, @supports_net_changes   = supports_net_changes
11. --, @index_name             = 'index_name'
12. --, @captured_column_list   = 'captured_column_list'
13. --, @filegroup_name         = 'filegroup_name'
14. --, @allow_partition_switch = 'allow_partition_switch'
15. ;
```

Untuk melihat konfigurasi CDC untuk tabel Anda, jalankan [sys.sp\$1cdc\$1help\$1change\$1data\$1capture](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-help-change-data-capture-transact-sql).

```
1. --View CDC configuration
2. exec sys.sp_cdc_help_change_data_capture 
3. 
4. --The following parameters are optional and must be used together.
5. --  'schema_name', 'table_name'
6. ;
```

Untuk informasi tabel CDC, fungsi, dan prosedur tersimpan dalam dokumentasi SQL Server selengkapnya, lihat bagian berikut:
+ [Prosedur tersimpan pengambilan data perubahan (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/change-data-capture-stored-procedures-transact-sql)
+ [Fungsi pengambilan data perubahan (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-data-capture-functions-transact-sql)
+ [Tabel pengambilan data perubahan (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/change-data-capture-tables-transact-sql)

## Pekerjaan pengambilan data perubahan
<a name="Appendix.SQLServer.CommonDBATasks.CDC.jobs"></a>

Saat Anda mengaktifkan CDC, SQL Server akan membuat pekerjaan CDC. Pemilik basis data (`db_owner`) dapat melihat, membuat, memodifikasi, dan menghapus pekerjaan CDC. Namun, akun sistem RDS tetap memilikinya. Oleh karena itu, pekerjaan tidak akan terlihat dari tampilan native, prosedur, atau di SQL Server Management Studio.

Untuk mengendalikan perilaku CDC di basis data, gunakan prosedur SQL Server native, seperti [sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql) dan [sp\$1cdc\$1start\$1job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-start-job-transact-sql). Untuk mengubah parameter pekerjaan CDC, seperti `maxtrans` dan `maxscans`, Anda dapat menggunakan [sp\$1cdc\$1change\$1job.](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql)

Untuk mendapatkan informasi pekerjaan CDC selengkapnya, Anda dapat mengueri tampilan pengelolaan dinamis berikut: 
+ sys.dm\$1cdc\$1errors
+ sys.dm\$1cdc\$1log\$1scan\$1sessions
+ sysjobs
+ sysjobhistory

## Pengambilan data perubahan untuk instans Multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ"></a>

Jika Anda menggunakan CDC di instans Multi-AZ, pastikan konfigurasi pekerjaan CDC duplikat cocok dengan duplikat yang ada di pengguna utama. Pekerjaan CDC dipetakan ke `database_id`. Jika database IDs di sekunder berbeda dari prinsipal, maka pekerjaan tidak akan dikaitkan dengan database yang benar. Untuk mencoba mencegah kesalahan setelah failover, RDS akan menghapus dan membuat ulang pekerjaan di pengguna utama baru. Pekerjaan yang dibuat ulang akan menggunakan parameter yang dicatat oleh pengguna utama sebelum failover.

Meskipun proses ini berjalan cepat, pekerjaan CDC masih mungkin berjalan sebelum RDS dapat memperbaikinya. Berikut tiga cara untuk memaksa parameter agar konsisten antara replika utama dan sekunder:
+ Gunakan parameter pekerjaan yang sama untuk semua basis data yang mengaktifkan CDC. 
+ Sebelum Anda mengubah konfigurasi pekerjaan CDC, konversi instans Multi-AZ menjadi AZ Tunggal.
+ Transfer parameter secara manual setiap kali Anda mengubahnya di pengguna utama.

Untuk melihat dan menentukan parameter CDC yang digunakan untuk membuat ulang pekerjaan CDC setelah failover, gunakan `rds_show_configuration` dan `rds_set_configuration`.

Contoh berikut menampilkan nilai yang diatur ke `cdc_capture_maxtrans`. Untuk parameter yang diatur ke `RDS_DEFAULT`, RDS akan otomatis mengonfigurasi nilai tersebut.

```
-- Show configuration for each parameter on either primary and secondary replicas. 
exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';
```

Untuk mengatur konfigurasi pada di server sekunder, jalankan `rdsadmin.dbo.rds_set_configuration`. Prosedur ini mengatur nilai parameter untuk semua basis data di server sekunder. Pengaturan ini hanya digunakan setelah failover. Contoh berikut menetapkan `maxtrans` untuk semua pekerjaan penangkapan CDC ke*1000*:

```
--To set values on secondary. These are used after failover.
exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans', 1000;
```

Untuk mengatur parameter pekerjaan CDC di pengguna utama, gunakan [sys.sp\$1cdc\$1change\$1job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).