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.