Microsoft phân phối Microsoft SQL Server 2008 R2 gói dịch vụ 1 (SP1) hoặc các bản sửa lỗi Microsoft SQL Server 2012 trong một tệp được tải xuống. Vì bản sửa lỗi được tích lũy, mỗi bản phát hành mới chứa tất cả các hotfix và tất cả các bản Cập Nhật bảo mật được bao gồm trong phiên bản SQL Server 2008 R2 gói dịch vụ trước đó 1 (SP1) hoặc Microsoft SQL Server 2012 Update Release.
Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn tạo ít nhất hai ấn phẩm giao dịch được dựa trên một cơ sở dữ liệu trong Microsoft SQL Server 2008 R2 hoặc trong Microsoft SQL Server 2012.
-
Mỗi Ấn phẩm có ít nhất một bài viết. Các bài viết không chồng lên nhau và mỗi bài viết thuộc chỉ một ấn phẩm.
-
Bạn đặt thuộc tính @sync_method của các ấn phẩm để đồngthời.
-
Bạn đặt thuộc tính @immediate_sync của các ấn phẩm thành True.
-
Bạn đã đặt tham số MaxCmdsInTran của tác nhân trình đọc Nhật ký vào một giá trị không phải bằng không.
-
Một trong các ấn phẩm sẽ nhận được nhiều chèn trong một giao dịch.
-
Sau khi giao dịch cam kết, đại diện trình đọc Nhật ký bắt đầu xử lý và phân tách giao dịch theo tham số MaxCmdsInTran .
-
Đại diện ảnh chụp nhanh trên một ấn phẩm khác bắt đầu trước khi đại diện trình đọc Nhật ký kết thúc nhiệm vụ.
Trong trường hợp này, tác nhân trình đọc Nhật ký không thành công và bạn nhận được thông báo lỗi sau đây:
Quy trình này không thể thực thi ' sp_MSadd_replcmds ' trên ' server\instance '. (Nguồn: MSSQLServer, số lỗi: 1007) Không thể chèn hàng phím trùng lặp trong đối tượng ' dbo. MSrepl_commands ' với chỉ mục duy nhất ' ucMSrepl_commands '. (Nguồn: MSSQLServer, số lỗi: 1007)
Giải pháp
Thông tin Cập Nhật tích lũy
SQL Server 2012
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Cumulative Update 1 cho SQL Server 2012. Để biết thêm thông tin về gói Cập Nhật lũy tích này, hãy bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2679368 Gói Cập Nhật tích lũy 1 cho SQL Server 2012Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản phát hành khắc phục SQL Server 2012 trước đó. Microsoft khuyên bạn nên cân nhắc việc áp dụng bản phát hành khắc phục gần đây nhất có chứa các hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để 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 đã được phát hành Bạn phải áp dụng một hotfix SQL Server 2012 vào một bản cài đặt của SQL Server 2012.
Gói Cập Nhật tích lũy 4 cho SQL Server 2008 R2 SP1
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật Cumulative 4. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 R2 SP1, hãy bấm vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2633146 Gói Cập Nhật tích lũy 4 cho SQL Server 2008 R2 SP1Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản phát hành khắc phục sự cố SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi 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 đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 SP1 đã được phát hành
Cách giải quyết
Để khắc phục sự cố này, hãy sử dụng một trong các phương pháp sau:
-
Không đặt thuộc tính @sync_method của các ấn phẩm thành "đồng thời" và không đặt thuộc tính @immediate_sync của các ấn phẩm thành "True" (đúng).
-
Đặt giá trị của tham số MaxCmdsInTran thành bằng không.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".