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 предопределенных ролей базы данных.