Triệu chứng
Quy sp_replmonitorsubscriptionpendingcmds lưu trữ không tương thích với sao nhân bản ngang hàng (P2P). Nó trả về một số lượng sai các lệnh đang chờ xử lý. Sau khi bạn áp dụng bản sửa lỗi này, sp_replmonitorsubscriptionpendingcmds sẽ tương thích với sao nhân bản P2P.
Lưu ý Tab "Lệnh Không phân phối" của Màn hình Sao nhân bản sẽ sp_replmonitorsubscriptionpendingcmds ở phía sau.
Giải pháp
Thông tin cập nhật tích lũy
Sự cố này đã được khắc phục trong các bản cập nhật tích lũy sau đây SQL Server:
Lưu ý Sau khi bạn áp dụng bản cập nhật tích lũy này, sp_replmonitorsubscriptionpendingcmds vẫn có thể báo cáo một số lượng không chính xác các lệnh đang chờ xử lý để sao nhân bản P2P nếu bảng MSrepl_originators có chứa các mục nhập stale.
Nếu bảng MSrepl_originators có chứa các mục cũ, việc chạy sp_replmonitorsubscriptionpendingcmds sẽ tạo ra thông báo cảnh báo sau trong nhật ký SQL Server nhật ký lỗi:
Cảnh báo: Không thể tải phiên bản cơ sở dữ liệu cho cơ sở dữ liệu đăng ký ' <database_name>'. Các sp_replmonitorsubscriptionpendingcmds có thể báo cáo số lượng không chính xác các lệnh chờ xử lý để sao nhân bản P2P.
Để giải quyết vấn đề này, hoặc xóa các mục cũ từ MSrepl_originators hoặc vượt qua chính xác "dbversion" của một cơ sở dữ liệu thuê bao như một đối số subdb_version khi bạn chạy sp_replmonitorsubscriptionpendingcmds.
Mẹo: Bạn có thể chọn một trong các phương pháp sau để tìm "dbversion" của cơ sở dữ liệu đăng ký:
-
Chạy truy vấn sau đây trên cơ sở dữ liệu phân phối: select dbversion from MSrepl_originators
where publisher_database_id = <Publisher_Database_ID>
and srvname = <Subscriber_Server>
and dbname = <Subscriber_Database>Lưu
ý Bạn cần thay thế các giá trị thích hợp cho <Publisher_Database_ID> , <Subscriber_Server> và <Subscriber_Database>. -
Chạy truy vấn sau đây trên cơ sở dữ liệu đăng ký: declare @current_version int , @currentGuid uniqueidentifier
select @currentGuid = recovery_fork_guid
from sys.database_recovery_status
where database_id = db_id()
select @current_version = substring(convert(binary(16), isnull(@currentGuid, 0x0)),1,6)
print @current_version
Mỗi bản cập nhật tích lũy mới dành SQL Server sẽ chứa tất cả các bản cập nhật nóng và bản sửa lỗi bảo mật có trong bản dựng trước. Chúng tôi khuyên bạn nên cài đặt bản dựng mới nhất cho phiên bản SQL Server:
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".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.