Отнася се за
SQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

Симптоми

Съхранената процедура sp_replmonitorsubscriptionpendingcmds не е съвместима с репликация с равноправен достъп (P2P). Връща неправилен брой чакащи команди. След като приложите тази корекция, sp_replmonitorsubscriptionpendingcmds ще бъде съвместим с P2P репликация.

Забележка Разделът  "Неразпределени команди" на монитора на репликацията извиква sp_replmonitorsubscriptionpendingcmds зад кулисите.

Решение

Информация за кумулативна актуализация

Този проблем е решен в следните кумулативни актуализации за SQL Server:

ЗабележкаСлед като приложите тази кумулативна актуализация, sp_replmonitorsubscriptionpendingcmds все още може да съобщи за неправилен брой чакащи команди за P2P репликация, ако таблицата MSrepl_originators съдържа остарели записи.

Ако таблицата на MSrepl_originators съдържа остарели записи, изпълняващите се sp_replmonitorsubscriptionpendingcmds ще генерират следното предупредително съобщение в регистрационния файл за грешки на SQL Server:

Предупреждение: Не може да се получи версията на базата данни за абонаментната база данни "<database_name>". Sp_replmonitorsubscriptionpendingcmdsможе да съобщи за неправилен брой чакащи команди за P2P репликация.

За да решите този проблем, изтрийте остарелите записи от MSrepl_originators или подайте правилната "dbversion" на база данни на абонамент като аргумент  на subdb_version, когато изпълнявате sp_replmonitorsubscriptionpendingcmds.

Съвети: Можете да изберете един от следните методи, за да намерите "dbversion" на абонаментна база данни:

  • Изпълнете следната заявка в база данни за разпространение: select dbversion from MSrepl_originatorswhere publisher_database_id = <Publisher_Database_ID>and srvname = <Subscriber_Server>and dbname = <Subscriber_Database>Забележка Трябва да заместите <Publisher_Database_ID> , <Subscriber_Server> и <Subscriber_Database>.

  • Изпълнете следната заявка в база данни за абонаменти: 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

Всяка нова кумулативна актуализация за SQL Server съдържа всички горещи поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за вашата версия на SQL Server:

Статут

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".

Препратки

Научете повече за терминологията , която Microsoft използва за описване на актуализациите на софтуера.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.