SQL Server Change Data Capture เป็นคุณสมบัติที่อ่านข้อมูลประวัติจากบันทึกธุรกรรม SQL Server และเก็บไว้ในตารางพิเศษ
จากการใช้ฟังก์ชั่นค่าตารางพิเศษ (TVF) จะช่วยให้ผู้ใช้สามารถสืบค้นข้อมูลนี้ทำให้สามารถรับการเปลี่ยนแปลงทั้งหมดในตารางที่ระบุหรือเฉพาะการเปลี่ยนแปลงสุทธิที่เกิดจากการเปลี่ยนแปลงภายในเวลาที่กำหนด
CDC มีข้อดีบางประการ
- มันสามารถกำหนดค่าให้ติดตามเฉพาะตารางหรือคอลัมน์บางอย่าง
- มันสามารถจัดการกับการเปลี่ยนแปลงของโมเดลในระดับหนึ่งได้
- ไม่ส่งผลกระทบต่อประสิทธิภาพเท่า ๆ กับทริกเกอร์เนื่องจากทำงานกับบันทึกธุรกรรม
- มันเปิด / ปิดการใช้งานได้ง่ายและไม่จำเป็นต้องมีคอลัมน์เพิ่มเติมในตารางที่ควรติดตาม
นอกจากนี้ยังมีข้อเสีย:
- จำนวนข้อมูลประวัติสามารถเป็นไปอย่างรวดเร็วมาก
- คุณไม่สามารถติดตามผู้ที่ทำการเปลี่ยนแปลงได้ (อย่างน้อยก็ไม่ใช่สำหรับการลบ)
- ข้อมูลประวัติใช้เวลาพอสมควรในการติดตามเนื่องจากเป็นไปตามบันทึกธุรกรรม
- ขึ้นอยู่กับ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL หาก Agent ไม่ทำงานหรือล่มจะไม่มีการติดตามประวัติ
ฉันได้อ่านเกี่ยวกับ CDC ค่อนข้างมากและในขณะที่ฉันรู้วิธีใช้งานฉันยังไม่แน่ใจว่ามันเป็นเครื่องมือที่เหมาะสมสำหรับฉันหรือไม่
- CDC สำหรับภารกิจ / สถานการณ์ใดเป็นเครื่องมือที่เหมาะสม (เช่นอนุญาตให้ผู้ใช้กู้คืนวัตถุข้อมูลไปยังจุดที่กำหนดเวลาหรือไม่การตรวจสอบ? แสดงประวัติของข้อมูลทั้งหมด?)
- เมื่อใดที่คุณไม่ควรใช้ CDC แต่หันไปใช้โซลูชันทริกเกอร์ที่กำหนดเอง
- การใช้ CDC ในฐานข้อมูลการดำเนินงานและใช้ประโยชน์จากข้อมูล CDC ภายในแอปพลิเคชันในการดำเนินงานหรือไม่ (เช่นแสดงให้ผู้ใช้เห็น) หรือว่านี่เป็นการใช้งานผิดวัตถุประสงค์อย่างชัดเจนหรือไม่?
ฉันมักจะได้ยินว่า CDC เป็นเครื่องมือตรวจสอบ แต่ไม่ใช่ว่าSQL Server Auditเหมาะกับอะไร พวกเขาทั้งสองมีเครื่องมือต่างกันสำหรับงานเดียวกันหรือไม่? หรือ CDC สามารถใช้สำหรับสิ่งอื่น ๆ ?
สถานการณ์ปัจจุบันของฉันคือฉันถูกขอให้สร้างกรอบข้อมูลที่เชื่อถือได้ซึ่งควรจะเป็นพื้นฐานสำหรับการใช้งานในอนาคตหลาย ๆ ข้อกำหนดที่แน่นอนมีความพร่ามัว แต่สิ่งหนึ่งคือมันควรจะสามารถติดตามประวัติข้อมูลและเรียกคืนรายการที่เก่ากว่าพร้อมกับข้อมูลที่เกี่ยวข้องทั้งหมดจากตารางอื่น ๆ ฉันกำลังประเมิน CDC ในขณะนี้เป็นตัวเลือก แต่ไม่แน่ใจว่านี่เป็นวิธีที่จะไปหรือไม่เพราะฉันไม่พบกรณีการใช้ที่แนะนำ
ในขณะที่ฉันชื่นชมคำแนะนำสำหรับสถานการณ์เฉพาะของฉันคำตอบควรให้คำแนะนำทั่วไปเกี่ยวกับเวลาหรือไม่ใช้การเก็บข้อมูลการเปลี่ยนแปลง