SQL Server Change Data Capture adalah fitur yang membaca data historis dari log transaksi SQL Server dan menyimpannya dalam tabel khusus.
Melalui penggunaan fungsi nilai tabel khusus (TVF) maka memungkinkan pengguna untuk menanyakan data ini, sehingga memungkinkan untuk mendapatkan semua perubahan pada tabel tertentu atau hanya perubahan bersih yang dihasilkan dari perubahan dalam waktu tertentu.
CDC memiliki kelebihan tertentu
- Itu dapat dikonfigurasi untuk hanya melacak tabel atau kolom tertentu.
- Ia mampu menangani perubahan model hingga tingkat tertentu.
- Itu tidak mempengaruhi kinerja sebanyak pemicu karena bekerja dengan log transaksi.
- Mudah diaktifkan / dinonaktifkan dan tidak memerlukan kolom tambahan pada tabel yang harus dilacak.
Ini juga memiliki beberapa kelemahan:
- Jumlah data riwayat bisa menjadi sangat cepat.
- Anda tidak dapat melacak siapa yang membuat perubahan (setidaknya tidak untuk dihapus).
- Data histori memerlukan beberapa waktu untuk mengejar ketinggalan, karena didasarkan pada log transaksi.
- Itu tergantung pada Agen SQL Server. Jika Agen tidak berjalan atau macet, tidak ada riwayat yang dilacak.
Saya telah membaca cukup banyak tentang CDC dan sementara saya tahu sekarang bagaimana menggunakannya, saya masih tidak yakin apakah itu alat yang tepat untuk saya.
- Untuk tugas / skenario manakah CDC alat yang tepat? (mis. Mengizinkan pengguna mengembalikan objek data ke titik waktu tertentu? Audit? Menampilkan riwayat lengkap data?)
- Kapan sebaiknya Anda tidak menggunakan CDC, tetapi menggunakan solusi berbasis pemicu khusus?
- Apakah boleh menggunakan CDC dalam basis data operasional dan memanfaatkan data CDC dalam aplikasi operasional? (misalnya menunjukkannya kepada pengguna akhir) Atau apakah ini jelas merupakan penyalahgunaan fitur ini?
Saya biasanya mendengar bahwa CDC adalah alat audit, tetapi bukankah itu untuk apa SQL Server Audit ? Apakah keduanya alat yang berbeda untuk tugas yang sama? Atau bisakah CDC digunakan untuk hal lain?
Skenario saya saat ini adalah saya diminta untuk membangun kerangka kerja data yang andal yang seharusnya menjadi dasar untuk berbagai aplikasi di masa depan. Persyaratan yang tepat kabur, tetapi satu adalah bahwa ia harus dapat melacak riwayat data dan mengembalikan entri yang lebih lama bersama dengan semua data terkait dari tabel lain. Saya mengevaluasi CDC sekarang sebagai opsi, tetapi saya tidak yakin apakah ini cara yang harus ditempuh, karena saya tidak dapat menemukan kasus penggunaan yang direkomendasikan.
Sementara saya menghargai saran untuk skenario spesifik saya, jawaban harus memberikan saran umum tentang kapan atau kapan tidak menggunakan Ubah Data Capture.