sp_replcmds (Transact-SQL)

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

Важное примечаниеВажно!

Процедуру sp_replcmds следует запускать только в целях диагностики ошибок репликации.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_replcmds [ @maxtrans = ] maxtrans

Аргументы

  • [ @maxtrans=] maxtrans
    Число транзакций, сведения о которых необходимо возвратить. Аргумент maxtrans имеет тип int со значением по умолчанию 1, что указывает следующую транзакцию, ожидающую распространения.

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

Имя столбца

Тип данных

Описание

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 может запускаться другим клиентом, который становится читателем журнала.

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

Разрешения

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