Mengaktifkan pengambilan data perubahan (CDC)

Halaman ini menjelaskan petunjuk mengaktifkan perubahan pengambilan data (CDC) di Cloud SQL untuk SQL Server. Fitur ini tersedia untuk database dari instance Anda.

CDC memungkinkan Anda menangkap berbagai jenis perubahan. Untuk informasi tentang cara mengaktifkan dan menonaktifkan CDC, lihat dokumentasi Microsoft.

Setelah Anda terhubung ke instance, pengguna sqlserver dapat melakukan banyak operasi CDC.

Lihat juga Bekerja dengan Data Perubahan.

Sebelum memulai

Sebelum Anda menerapkan CDC pada instance, tinjau semua informasi di halaman ini.

Konfirmasi ketersediaan fitur

CDC tersedia untuk versi database Cloud SQL untuk SQL Server berikut:

  • SQL Server 2022 Standard
  • SQL Server 2022 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise
  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise

Mengaktifkan CDC dan memulai tugas pengambilan CDC

Database Anda memiliki prosedur tersimpan berikut, untuk digunakan oleh pengguna sqlserver:

  • msdb.dbo.gcloudsql_cdc_enable_db
  • msdb.dbo.gcloudsql_cdc_disable_db

Aktifkan CDC

Cara mengaktifkan fitur ini untuk database, jalankan prosedur tersimpan yang diperlukan dan teruskan nama database. Contoh:

EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'

Nonaktifkan CDC

Cara menonaktifkan fitur ini untuk database, jalankan perintah seperti berikut:

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'

Mulai tugas pengambilan CDC

Setelah CDC diaktifkan, tugas akan dibuat untuk pengambilan dan pembersihan. Tugas tersebut tidak terlihat oleh pengguna sqlserver di SQL Server Management Studio (SSMS). Namun, Anda dapat memodifikasi tugas menggunakan prosedur tersimpan bawaan. Selain itu, tugas dapat dilihat melalui prosedur tersimpan berikut:

Untuk memulai tugas pembersihan, Anda dapat menggunakan perintah berikut:

EXEC sys.sp_cdc_start_job @job_type = N'cleanup'

Untuk mengubah parameter tugas, Anda dapat menggunakan perintah yang mirip dengan yang berikut ini, misalnya:

EXEC sys.sp_cdc_change_job  @job_type = N'capture',
        @maxtrans = 20,
        @pollinginterval = NULL,
        @maxscans = NULL,
        @continuous = NULL

Untuk informasi selengkapnya tentang memulai dan mengganti tugas, lihat referensi berikut:

Lihat juga: sys.sp_cdc_add_job.

Mengaktifkan CDC untuk tabel

Setelah Anda mengaktifkan CDC untuk database, setiap pengguna dengan akses dbo (pemilik database) dapat menyiapkan pelacakan tabel di database.

Untuk informasi tentang perintah dan opsi standar CDC, lihat Mengaktifkan dan Menonaktifkan Pengambilan Data Perubahan.

Melacak perubahan dalam tabel

Untuk melacak tabel, gunakan prosedur tersimpan sys.sp_cdc_enable_table.

Misalnya, Anda dapat menentukan perintah yang mirip dengan perintah berikut:

EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @role_name = N'CDC'

Periksa apakah CDC diaktifkan di tabel

Untuk memeriksa apakah CDC diaktifkan di tabel, gunakan prosedur tersimpan sys.sp_cdc_help_change_data_capture.

Misalnya, Anda dapat menentukan perintah yang mirip dengan perintah berikut:

EXECUTE sys.sp_cdc_help_change_data_capture
  @source_schema = N'dbo',
  @source_name = N'customer'

Perubahan kueri melalui tabel perubahan CDC

Untuk melihat perubahan CDC yang dilakukan di tabel, gunakan kueri SELECT pada tabel yang otomatis dibuat saat CDC diaktifkan di tabel tersebut.

Tabel tersebut diberi nama sebagai berikut:

<schema>_<table_name>_CT

Misalnya, Anda dapat menentukan perintah yang mirip dengan perintah berikut:

SELECT * FROM cdc.dbo_customer_CT

Aktifkan CDC pada tabel dengan instance tangkapan yang ditentukan

Untuk melacak tabel dengan "instance capture", gunakan prosedur tersimpan sys.sp_cdc_enable_table.

Misalnya, Anda dapat menentukan perintah yang mirip dengan perintah berikut:

EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'customer',
    @role_name = N'CDC',
    @capture_instance = N'customer_cdc',
    @supports_net_changes = 1

Mencari semua perubahan dalam instance tangkapan

Untuk melihat perubahan CDC yang dibuat pada tabel dalam "instance tangkapan", gunakan prosedur tersimpan cdc.fn_cdc_get_all_changes_<capture_instance>.

Misalnya, Anda dapat menentukan pernyataan SQL yang mirip dengan berikut ini:

DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn(N'customer_cdc')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_customer_cdc(@from_lsn, @to_lsn, N'all');

Menonaktifkan CDC untuk tabel

Untuk menonaktifkan pelacakan CDC untuk tabel, gunakan prosedur tersimpan sys.sp_cdc_disable_table. Tentukan instance perekaman untuk menonaktifkannya. Sebagai alternatif, tentukan instance tangkapan sebagai 'all'.

Misalnya, Anda dapat menentukan perintah yang mirip dengan berikut ini untuk menonaktifkan CDC untuk tabel:

EXEC sys.sp_cdc_disable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @capture_instance = N'all'

Menghapus database berkemampuan CDC

Jika CDC diaktifkan untuk database dan Anda mencoba menghapusnya, Anda mungkin mengalami error. Jika hal ini terjadi, nonaktifkan CDC untuk database, lalu hapus database tersebut.

Misalnya, Anda dapat menentukan perintah yang mirip dengan berikut ini untuk menonaktifkan dan menghapus database:

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
DROP DATABASE 'DATABASE_NAME'

Jika Anda tidak dapat menghapus database karena memiliki koneksi terbuka, maka gunakan kueri berikut untuk melihat koneksi tersebut:

select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'

Tutup semua koneksi yang terbuka. Nonaktifkan CDC untuk database, lalu hapus database tersebut.

Mengimpor database berkemampuan CDC

Saat mengimpor database yang didukung CDC, Cloud SQL untuk SQL Server akan tetap mengaktifkan tanda KEEP_CDC dan secara otomatis membuat tugas pengambilan dan pembersihan dengan parameter default.