Поделиться через


sp_replcmds (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Возвращает команды для транзакций, помеченных для репликации. Эта хранимая процедура выполняется на издателе в базе данных публикации.

Внимание

Процедура sp_replcmds должна выполняться только для устранения проблем с репликацией.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

Аргументы

[ @maxtrans = ] maxtrans

Количество транзакций для возврата сведений. @maxtrans имеет значение int с значением по умолчанию, указывающее следующую транзакцию1, ожидающую распространения.

Результирующий набор

Имя столбца Тип данных Description
article id int Идентификатор статьи.
partial_command bit Указывает, является ли эта команда частичной.
command varbinary(1024) Значение команды.
xactid binary(10) Идентификатор транзакции.
xact_seqno varbinary(16) Номер последовательности транзакции.
publication_id int Идентификатор публикации.
command_id int Идентификатор команды в MSrepl_commands.
command_type int Тип команды.
originator_srvname sysname Сервер, на котором была начата транзакция.
originator_db sysname База данных, в которой была начата транзакция.
pkHash int Только для внутреннего применения.
originator_publication_id int Идентификатор публикации, в которой началась транзакция.
originator_db_version int Версия базы данных, в которой началась транзакция.
originator_lsn varbinary(16) Указывает регистрационный номер транзакции в журнале (номер LSN) для команды в порождающей публикации.

Замечания

sp_replcmds используется процессом чтения журналов в репликации транзакций.

Репликация обрабатывает первый клиент, который выполняется sp_replcmds в данной базе данных как средство чтения журналов.

Эта процедура может формировать команды для таблиц с заданным владельцем или не квалифицировать имя таблицы (по умолчанию). Дополнение квалификатора в виде имени таблицы позволяет реплицировать данные из таблиц, принадлежащих конкретному пользователю, в таблицы, принадлежащие этому же пользователю, но находящиеся в другой базе данных.

Поскольку имя таблицы в базе данных-источнике квалифицируется именем владельца, владелец таблицы в базе данных назначения должен иметь то же самое имя.

Клиенты, которые пытаются запустить sp_replcmds в той же базе данных, получают ошибку 18752 до тех пор, пока первый клиент не отключается. После отключения первого клиента другой клиент может запуститься sp_replcmdsи становится новым средством чтения журналов.

Предупреждение номер 18759 добавляется как в журнал ошибок SQL Server, так и в журнал приложений Microsoft Windows, если sp_replcmds не удается реплицировать текстовую команду, так как текстовый указатель не был получен в одной транзакции.

Разрешения

Могут выполняться sp_replcmdsтолько члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.