ฉันจะตรวจสอบฐานข้อมูล SQL Server สำหรับการเปลี่ยนแปลงตารางโดยไม่ต้องใช้ทริกเกอร์หรือปรับเปลี่ยนโครงสร้างของฐานข้อมูลได้อย่างไร? สภาพแวดล้อมการเขียนโปรแกรมที่ฉันต้องการคือ. NETและ C #
ฉันต้องการให้รองรับSQL Server 2000 SP4 หรือใหม่กว่า แอปพลิเคชันของฉันคือการแสดงข้อมูลแบบ bolt-on สำหรับผลิตภัณฑ์ของ บริษัท อื่น ฐานลูกค้าของเราอยู่ในหลักพันดังนั้นฉันไม่ต้องการที่จะใส่ข้อกำหนดที่เราแก้ไขตารางผู้จำหน่ายบุคคลที่สามในทุก ๆ การติดตั้ง
โดย"การเปลี่ยนแปลงตาราง"ฉันหมายถึงการเปลี่ยนแปลงข้อมูลตารางไม่ใช่การเปลี่ยนแปลงโครงสร้างตาราง
ในที่สุดฉันต้องการให้การเปลี่ยนแปลงเกิดขึ้นในแอปพลิเคชันของฉันแทนที่จะต้องตรวจสอบการเปลี่ยนแปลงเป็นระยะ
หลักสูตรที่ดีที่สุดของการดำเนินการให้ความต้องการของฉัน (ไม่ทริกเกอร์หรือสคีแก้ไข, SQL Server 2000 และ 2005) น่าจะเป็นที่จะใช้BINARY_CHECKSUM
ฟังก์ชั่นในT-SQL วิธีที่ฉันวางแผนที่จะใช้คือ:
ทุกๆ X วินาทีจะเรียกใช้คิวรีต่อไปนี้:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
และเปรียบเทียบกับค่าที่เก็บไว้ หากมีการเปลี่ยนแปลงค่าไปผ่านแถวตารางโดยแถวโดยใช้แบบสอบถาม:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
และเปรียบเทียบเช็คซัมที่ส่งคืนกับค่าที่เก็บไว้