จะทราบได้อย่างไรว่าไฟล์สำรองประกอบด้วย CDC หรือไม่


9

การใช้ SQL Server 2008 ถึงปี 2014 ฉันรู้วิธีสำรองและกู้คืนฐานข้อมูลด้วย Change Data Capture enabled (CDC) แต่สิ่งที่ฉันกำลังมองหาคือวิธีการสืบค้นไฟล์สำรองข้อมูลเต็มรูปแบบเพื่อตรวจสอบว่ามีข้อมูล CDC หรือไม่

สิ่งที่ดีมากจะเป็นเช่นRESTORE FILELISTONLYนั้นที่ได้รับรายชื่อไฟล์จากฐานข้อมูล แต่รับสถานะ CDC แทนเพื่อพิจารณาว่าการกู้คืนจะต้องใช้การตั้งค่าสถานะ KEEP_CDC หรือไม่

มีวิธีการตรวจสอบว่าการสำรองข้อมูลประกอบด้วยข้อมูล CDC หรือไม่

ขอบคุณ!

คำตอบ:


7

(ถ้ามีคนพบวิธี - ที่ฉันไม่คิดว่ามีอยู่ฉันจะลบคำตอบของฉัน :-))

มีวิธีการตรวจสอบว่าการสำรองข้อมูลประกอบด้วยข้อมูล CDC หรือไม่

ฉันไม่คิดว่าจะมีวิธีใดที่จะทราบได้จากการสำรองข้อมูลหากมีการเปิดใช้งาน CDC หรือไม่

มากที่สุดที่คุณสามารถทราบว่าฐานข้อมูลมีส่วนร่วมในการจำลองแบบ (ภายใต้ประทุนใช้ตัวแทนผู้อ่านบันทึกที่สแกนบันทึกการทำธุรกรรม) หรือไม่โดยใช้DatabaseBackupLSNในผลลัพธ์ของRESTORE HEADERONLYDatabaseBackupLSN เช่นเดียวกับ“ จุดเริ่มต้นของจุดตรวจสอบ” เริ่มต้น LSN นี้จะตรงกับFirstLSNหากมีการสำรองข้อมูลเมื่อฐานข้อมูลไม่ได้ใช้งานและไม่มีการกำหนดค่าการจำลองแบบ

ฉันถือว่าเหตุผลที่ไมโครซอฟท์ไม่ปรากฏว่ามีการเปิดใช้งาน CDC หรือไม่อาจเป็นเรื่องความปลอดภัยเช่นกัน CDC เป็นเทคโนโลยีระดับองค์กรที่ช่วยให้สามารถติดตามการเปลี่ยนแปลงได้ตลอดจนถึงระดับคอลัมน์ ข้อกำหนดนี้เป็นไปตามข้อบังคับเช่น HIPAA, FISMA เป็นต้น

จากการกู้คืนหรือการเชื่อมต่อฐานข้อมูลที่เปิดใช้งานเพื่อเปลี่ยนการเก็บข้อมูล

SQL Server ใช้ตรรกะต่อไปนี้เพื่อตรวจสอบว่าการดักจับข้อมูลการเปลี่ยนแปลงยังคงเปิดใช้งานอยู่หลังจากฐานข้อมูลถูกกู้คืนหรือเชื่อมต่อ:

  • หากฐานข้อมูลถูกกู้คืนไปยังเซิร์ฟเวอร์เดียวกันที่มีชื่อฐานข้อมูลเดียวกันการดักจับการเปลี่ยนแปลงข้อมูลจะยังคงเปิดใช้งานอยู่
  • หากฐานข้อมูลถูกกู้คืนไปยังเซิร์ฟเวอร์อื่นโดยค่าเริ่มต้นการดักจับข้อมูลการเปลี่ยนแปลงจะถูกปิดใช้งานและข้อมูลเมตาที่เกี่ยวข้องทั้งหมดจะถูกลบ
  • หากต้องการเก็บการเปลี่ยนแปลงข้อมูลไว้ให้ใช้ตัวเลือก KEEP_CDC เมื่อกู้คืนฐานข้อมูล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกนี้ดู RESTORE
  • หากฐานข้อมูลแยกออกและเชื่อมต่อกับเซิร์ฟเวอร์เดียวกันหรือเซิร์ฟเวอร์อื่นการดักจับข้อมูลการเปลี่ยนแปลงจะยังคงเปิดใช้งานอยู่
  • หากฐานข้อมูลเชื่อมต่อหรือกู้คืนด้วยตัวเลือก KEEP_CDC ไปยังรุ่นอื่นที่ไม่ใช่ Enterprise การดำเนินการจะถูกบล็อกเนื่องจากการดักจับข้อมูลการเปลี่ยนแปลงต้องใช้ SQL Server Enterprise ข้อความแสดงข้อผิดพลาด 932 แสดงขึ้น:

SQL Server ไม่สามารถโหลดฐานข้อมูล '%. * ls' ได้เนื่องจากมีการเปิดใช้งานการดักจับข้อมูล SQL Server รุ่นที่ติดตั้งในปัจจุบันไม่รองรับการเก็บข้อมูลการเปลี่ยนแปลง ปิดใช้งานการดักจับการเปลี่ยนแปลงข้อมูลในฐานข้อมูลโดยใช้ SQL Server รุ่นที่ได้รับการสนับสนุนหรืออัปเกรดอินสแตนซ์เป็นอันที่รองรับการเก็บข้อมูลการเปลี่ยนแปลง


คิน - ตามปกติคุณเป็น rockstar DBA ขอบคุณสำหรับรายละเอียด ฉันคิดว่าฉันมาถึงข้อสรุปเดียวกันและกำลังมองหาใครสักคนที่จะตรวจสอบว่าไม่มีทางที่จะตรวจสอบว่าการสำรองข้อมูลมี CDC หรือไม่ ขอให้มีความสุขมาก ๆ ในวันนี้นะ ขอบคุณ!
Steve Stedman

@ SteveStedman ขอบคุณสำหรับคำพูดที่ใจดี โปรดโหวต / ยอมรับคำตอบหากคำถามของคุณตอบแล้ว สิ่งนี้จะช่วยผู้อ่านในอนาคตเช่นกัน :-)
Kin Shah

ขอบคุณ Steve สำหรับการโพสต์และขอบคุณ @Kin เรียนรู้สิ่งใหม่ในวันนี้
SQLBoy

หมายเหตุ: CDC มีให้บริการใน 2016SP1 Standard หรือสูงกว่าและกลายเป็นกระแสหลักมากขึ้น ฉันต้องการตัวเลือก CDC ใน UI การคืนค่าบน SSMS ฉันแนะนำสิ่งนี้ในการเชื่อมต่อด้วยเช่นกัน: connect.microsoft.com/SQLServer/feedback/details/3144490/?hl=th
GilesDMiddleton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.