อาการ
สมมติว่าคุณใช้การจำลองแบบผสานที่ผู้เผยแพร่กำลังทำงานบน Microsoft SQL Server ๒๐๑๒หรือ SQL Server ๒๐๑๒ Service Pack 1 (SP1) หลังจากที่คุณอัปเกรด Publisher ไปยัง SQL Server ๒๐๑๒ Service Pack 2 (SP2) คุณจะไม่สามารถเริ่มตัวแทนการผสานใหม่ได้ นอกจากนี้คุณจะได้รับข้อผิดพลาดต่อไปนี้:
กระบวนการผสานไม่สามารถทำการล้างข้อมูล metadata ที่ยึดตามการเก็บข้อมูลในฐานข้อมูล ' MergePub ' ถ้าความล้มเหลวนี้ยังคงทำงานอยู่ให้ลองเพิ่มการหมดเวลาของคิวรีสำหรับกระบวนการนี้หรือลองลดระยะเวลาการเก็บข้อมูล เมื่อทำการแก้ไขปัญหาให้รีสตาร์ตการซิงโครไนซ์กับการบันทึกประวัติ verbose และระบุไฟล์ผลลัพธ์ที่จะเขียน
เมื่อคุณเรียกใช้กระบวนงานที่เก็บไว้ sp_mergemetadataretentioncleanup ด้วยตนเองบนผู้เผยแพร่กระบวนงานที่เก็บไว้ล้มเหลวและคุณได้รับข้อผิดพลาดต่อไปนี้:
Msg ๒๐๖ระดับ16รัฐ2กระบวนการ sp_mergemetadataretentioncleanup บรรทัด63Operand ชนิดการปะทะกัน: bigint ไม่เข้ากันกับ uniqueidentifierMsg ๒๐๖ระดับ16รัฐ 2, กระบวนงาน sp_mergemetadataretentioncleanup, บรรทัด65Operand ชนิดการปะทะกัน: int ไม่เข้ากันกับ uniqueidentifier
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสม3สำหรับ SQL Server ๒๐๑๒ SP2 /en-us/help/3002049
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ให้เรียกใช้คิวรีต่อไปนี้บนฐานข้อมูลที่เผยแพร่:if exists (select * from sys.columns sc inner join sys.types st on sc.system_type_id = st.system_type_id where object_id = object_id('dbo.sysmergesubscriptions') and sc.name = 'last_local_recgen' and st.name = 'uniqueidentifier') begin alter table dbo.sysmergesubscriptions drop column last_local_recgen alter table dbo.sysmergesubscriptions add last_local_recgen bigint null end
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"