ในปัญหาในการถ่ายภาพปัญหากับการซิงโครไนซ์อุปกรณ์ที่ไม่เชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลกลางเรากำลังประสบปัญหาหลังจากอัปเกรดเป็น SQL Server 2012 บนเซิร์ฟเวอร์ ดูเหมือนว่า CHANGE_TRACKING_MIN_VALID_VERSION จะส่งคืนค่าที่สูงกว่าที่ควร 1 (หรืออย่างน้อยก็กว่าที่เคยเป็นมาก่อนการอัพเกรด)
ฉันทำงานผ่านตัวอย่างที่ยอดเยี่ยมของ Arshad Ali ถึงวิธีการตั้งค่าตัวอย่างง่ายๆ
ฉันเรียกใช้สคริปต์จาก # 1 ถึง # 5 เพื่อแทรกลบและอัปเดตแถวในตารางพนักงานในทั้งสภาพแวดล้อมของ SQL Server 2008 และ 2012
ในปี 2008 คำสั่งต่อไปนี้จะคืนค่า 0:
SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee'))
ในปี 2012 จะส่งคืน 1
ในการทำงานกับสคริปต์อีกสองสาม (6-8) ในการทดสอบฉันตั้งระยะเวลาการเก็บข้อมูลเป็น 1 นาทีเพื่อหวังว่าจะบังคับให้มีการดำเนินการล้างข้อมูล ฉันออกไปทั้งวันและเห็นได้ชัดว่ามันวิ่งข้ามคืน
ในอินสแตนซ์ปี 2008 CHANGE_TRACKING_CURRENT_VERSION และ CHANGE_TRACKING_MIN_VALID_VERSION มีค่าเท่ากับ (11) ในอินสแตนซ์ 2012 นั้น CHANGE_TRACKING_MIN_VALID_VERSION สูงกว่าหนึ่ง (12) มากกว่า CHANGE_TRACKING_CURRENT_VERSION (11) สิ่งนี้อาจส่งผลกระทบต่อกระบวนการซิงโครไนซ์เมื่อฐานข้อมูลไม่ได้ใช้งานเป็นระยะเวลานาน และเราพบว่ากระบวนการนั้นอาจติดอยู่ในลูปโดยเฉพาะอย่างยิ่งเมื่อทำการทดสอบต่อไปนี้เพื่อพิจารณาว่าจำเป็นต้องมีการเริ่มต้นใหม่เมื่อเทียบกับการซิงโครไนซ์หรือไม่:
IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor
RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''...
มีใครเคยประสบกับการเปลี่ยนแปลงพฤติกรรมนี้บ้างไหม? ใครบ้างมีคำอธิบาย?