Tác nhân kết hợp có thể không thành công trong đồng bộ hoá nhân bản hợp nhất trong SQL Server

BUG #: 171429 (Content Maintenance)

Triệu chứng

Trong quá trình đồng bộ hóa nhân bản hợp nhất trong Microsoft SQL Server 2008 và các phiên bản của SQL Server, nhân viên kết hợp có thể không thành công. Ngoài ra, bạn nhận được thông báo lỗi sau:

Tác nhân kết hợp không thành công sau khi phát hiện dọn siêu dữ liệu dựa trên lưu giữ đã xoá siêu dữ liệu tại các thuê bao để thay đổi chưa được gửi đến nhà xuất bản. Bạn phải reinitialize đăng ký (mà không cần tải lên). (Nguồn: MSSQL_REPL, lỗi số: MSSQL_REPL-2147199401) Nhận trợ giúp: http://help/MSSQL_REPL-2147199401

Sự cố này có thể xảy ra vì nhiều lý do. Điều này bao gồm nhiều lý do được mong đợi trong một số trường hợp. Để xác định xem bạn đã gặp phải lỗi này bất ngờ, kiểm tra chi tiết siêu dữ liệu được mô tả trong phần "nguyên nhân".

Nguyên nhân

Nguyên nhân của vấn đề này có thể được tìm thấy trong bảng hệ thống sau đây trên các thuê bao:

  • dbo.sysMergeSubscriptions

  • dbo.MsMerge_Genhistory

Đảm bảo rằng các tác nhân kết hợp không đồng bộ hoá. Sau đó, chạy truy vấn sau đây và kiểm tra kết quả:

chọn sentgen từ SubscriberDB. dbo. sysMergeSubscriptions nơi pubid = subid và sentgen không nullQuery results Cột sentgen đánh dấu nhóm cũ nhất của những thay đổi mà người đăng ký gửi đến nhà xuất bản. Nếu nhiều giá trị được trả lại, kiểm tra các cột khác trong bảng dbo. sysMergeSubscriptions để đảm bảo rằng bạn đang xem siêu dữ liệu cho các ấn phẩm chính xác. Tiếp theo, sử dụng giá trị truy vấn này trả lại trong truy vấn sau đây:

chọn hàng đầu 20 * từ SubscriberDB. dbo. MSmerge_genhistory nơi thế hệ > = sentgen_value thứ tự theo thế hệKết quả truy vấn sẽ giống như sau:Query result by generation bạn có thể gặp phải lỗi bất ngờ khi tất cả các điều kiện sau là đúng:

  • Giá trị trong cột tạo trong hàng đầu tiên là hơi lớn hơn giá trị sentgen trong truy vấn trước đó.

  • Giá trị trong cột genstatus4.

  • Giá trị trong cột changecount0.

Lưu ý Giá trị cột coldate của hàng đầu tiên cũng thường nhiều hơn giá trị của cột đó trong các hàng.

Giải pháp

Để khắc phục sự cố này, reinitialize thuê bao tạo ra lỗi. Trong một số trường hợp, bạn có thể giải quyết vấn đề này mà không cần cài lại hoàn toàn. Liên hệ với dịch vụ hỗ trợ khách hàng của Microsoft để biết thông tin về giải pháp có thể. Để ngăn chặn sự cố trong tương lai của vấn đề này, áp dụng một trong các bản vá, tuỳ thuộc vào phiên bản của SQL Server.

Thông tin Cập Nhật tích luỹ

SQL Server 2008

Không có khắc phục sự cố này trong SQL Server 2008.

SQL Server 2008 R2 gói dịch vụ 2

Sửa chữa cho vấn đề này lần đầu tiên được phát hành tích lũy Update 3. Để biết thêm thông tin về cách lấy gói Cập Nhật tích luỹ này dành cho SQL Server 2008 R2 gói dịch vụ 2, bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2754552 tích lũy Cập Nhật gói 3 cho SQL Server 2008 R2 gói dịch vụ 2Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được bao gồm các bản SQL Server 2008 R2 gói dịch vụ 2 vá. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá phát hành gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2730301 sql server 2008 R2 xây dựng đã được phát hành sau khi sql server 2008 R2 gói dịch vụ 2

SQL Server 2012

Sửa chữa cho vấn đề này lần đầu tiên phát hành bản Cập Nhật tích luỹ 4. Để biết thêm thông tin về cách lấy gói Cập Nhật tích luỹ này dành cho SQL Server 2012, hãy bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2758687 tích lũy Cập Nhật gói 4 cho SQL Server 2012Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được bao gồm các bản SQL Server 2012 sửa chữa phát hành. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá phát hành gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2692828 bản dựng sql server 2012 đã được phát hành sau khi sql server 2012

SQL Server 2008 R2 gói dịch vụ 1

Sửa chữa cho vấn đề này lần đầu tiên được phát hành 8 bản Cập Nhật tích luỹ. Để biết thêm thông tin về cách lấy gói Cập Nhật tích luỹ này dành cho SQL Server 2008 R2 gói dịch vụ 1, bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2723743 tích lũy Cập Nhật gói 8 cho SQL Server 2008 R2 SP1Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và sửa chữa tất cả bản vá bảo mật được bao gồm các bản SQL Server 2008 R2 gói dịch vụ 1 phát hành. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá phát hành gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2567616 sql server 2008 R2 xây dựng đã được phát hành sau khi sql server 2008 R2 SP1 được phát hành

Workaround

To work around this issue and recover from the merge agent failure, update the cleanedup_unsent_changes column and the genstatus column in the tables that you previously queried. To perform the updates, use queries such as the following:

update SubscriberDB.dbo.sysMergeSubscriptions set cleanedup_unsent_changes = 0 where sentgen = sentgen

update SubscriberDB.dbo.MSmerge_genhistory set genstatus = 2 where generation = first row from other queryFrom these example queries, the value of the sentgen placeholder would be 7253913 and the value of the first row from other query placeholder would be 7253914. Your values will be different.

After the tables are updated, restart the merge agent, and wait for synchronization to be complete. When synchronization is complete, run the following query again, and see whether the sentgen value increased:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not nullIf the agent is successful, and if the sentgen value increased, you successfully worked around the failure.

Author: jonclark
Writer: v-thomr
Tech Review: jonclark; ramakoni
Editor: v-anwale,v-rhowar

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Cảm ơn phản hồi của bạn!

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×