Симптоми
Съхранената процедура 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_originators
where 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 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
Всяка нова кумулативна актуализация за SQL Server съдържа всички горещи поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за вашата версия на SQL Server:
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Препратки
Научете повече за терминологията , която Microsoft използва за описване на актуализациите на софтуера.