Áp dụng cho
SQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

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_originatorswhere 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 uniqueidentifierselect @currentGuid = recovery_fork_guidfrom sys.database_recovery_statuswhere 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.

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

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.