Bagaimana cara mengetahui apakah file cadangan berisi CDC?

9

Menggunakan SQL Server 2008 hingga 2014, saya tahu cara membuat cadangan dan memulihkan database dengan Ubah Data Capture diaktifkan (CDC), tetapi apa yang saya cari adalah cara untuk meminta file cadangan penuh untuk menentukan apakah itu berisi data CDC.

Apa yang akan luar biasa seperti RESTORE FILELISTONLYmendapatkan daftar file dari database, tetapi sebaliknya mendapatkan status CDC untuk menentukan apakah pemulihan perlu menggunakan flag KEEP_CDC?

Apakah ada cara untuk menentukan apakah cadangan berisi data CDC?

Terima kasih!

Steve Stedman
sumber

Jawaban:

7

(jika seseorang menemukan cara - yang menurut saya tidak ada, saya akan menghapus jawaban saya :-))

Apakah ada cara untuk menentukan apakah cadangan berisi data CDC?

Saya tidak berpikir bahwa ada cara untuk mengetahui dari cadangan, apakah CDC diaktifkan atau tidak.

Paling Anda bisa tahu apakah database terlibat dalam replikasi (di bawah tenda menggunakan agen pembaca log yang memindai log Transaksi) atau tidak dengan menggunakan DatabaseBackupLSN dalam hasil dari RESTORE HEADERONLYDatabaseBackupLSN seperti "mulai dari pos pemeriksaan" yang dipicu ketika cadangan dimulai. LSN ini akan bertepatan dengan FirstLSNjika cadangan diambil ketika database tidak digunakan dan tidak ada replikasi yang dikonfigurasi.

Saya berasumsi alasan bahwa microsoft tidak muncul apakah CDC diaktifkan atau tidak, mungkin juga merupakan masalah keamanan. CDC adalah teknologi tingkat perusahaan yang memungkinkan pelacakan perubahan sampai ke tingkat kolom. Ini diperlukan oleh peraturan seperti HIPAA, FISMA, dll.

Dari Memulihkan atau Memasang Basis Data Diaktifkan untuk Mengubah Pengambilan Data

SQL Server menggunakan logika berikut untuk menentukan apakah perubahan pengambilan data tetap diaktifkan setelah database dipulihkan atau dilampirkan:

  • Jika database dikembalikan ke server yang sama dengan nama database yang sama, perubahan pengambilan data tetap diaktifkan.
  • Jika database dikembalikan ke server lain, secara default perubahan pengambilan data dinonaktifkan dan semua metadata terkait dihapus.
  • Untuk mempertahankan perubahan pengambilan data, gunakan opsi KEEP_CDC saat mengembalikan database. Untuk informasi lebih lanjut tentang opsi ini, lihat KEMBALIKAN.
  • Jika database dilepaskan dan dilampirkan ke server yang sama atau server lain, perubahan pengambilan data tetap diaktifkan.
  • Jika database dilampirkan atau dipulihkan dengan opsi KEEP_CDC untuk edisi selain Enterprise, operasi diblokir karena perubahan pengambilan data memerlukan SQL Server Enterprise. Pesan kesalahan 932 ditampilkan:

SQL Server tidak dapat memuat basis data '%. * Ls' karena perubahan pengambilan data diaktifkan. Edisi SQL Server yang diinstal saat ini tidak mendukung perubahan pengambilan data. Nonaktifkan perubahan pengambilan data dalam database dengan menggunakan edisi SQL Server yang didukung, atau tingkatkan instans ke versi yang mendukung perubahan pengambilan data.

Kin Shah
sumber
Kin - Seperti biasa, Anda adalah DBA rockstar. Terima kasih untuk detailnya. Saya pikir saya telah sampai pada kesimpulan yang sama, dan benar-benar mencari seseorang untuk memvalidasi bahwa tidak ada cara hanya memeriksa apakah cadangan berisi CDC. Semoga hari mu menyenangkan. Terima kasih!
Steve Stedman
@SteveStedman Terima kasih atas kata-kata baik. Harap pilih / terima jawaban jika pertanyaan Anda dijawab. Ini akan membantu pembaca di masa depan juga :-)
Kin Shah
Terima kasih Steve untuk posting ini dan terima kasih @ Kin, belajar sesuatu yang baru hari ini.
SQLBoy
Catatan: CDC sekarang tersedia pada Standar 2016SP1 atau lebih tinggi, dan menjadi lebih umum. Saya ingin opsi CDC di UI pemulihan pada SSMS, saya menyarankan ini juga di connect: connect.microsoft.com/SQLServer/feedback/details/3144490/...
GilesDMiddleton