Compartilhar via


sp_replcmds (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Retorna os comandos para transações marcadas para replicação. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Importante

O sp_replcmds procedimento deve ser executado apenas para solucionar problemas com a replicação.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

Argumentos

@maxtrans [ = ] maxtrans

O número de transações sobre as quais retornar informações. @maxtrans é int, com um padrão de 1, que especifica a próxima transação aguardando distribuição.

Conjunto de resultados

Nome da coluna Tipo de dados Descrição
article id int A ID do artigo.
partial_command bit Indica se esse comando é um comando parcial.
command varbinário(1024) O valor do comando.
xactid binary(10) ID da transação.
xact_seqno varbinary(16) O número de seqüência da transação.
publication_id int A ID da publicação.
command_id int ID do comando em MSrepl_commands.
command_type int Tipo de comando.
originator_srvname sysname Servidor onde a transação originou.
originator_db sysname Banco de dados onde a transação originou.
pkHash int Somente para uso interno.
originator_publication_id int ID da publicação de origem da transação.
originator_db_version int Versão do banco de dados onde a transação originou.
originator_lsn varbinary(16) Identifica o LSN (número de sequência de log) para o comando na publicação de origem.

Comentários

sp_replcmds é usado pelo processo de leitor de log na replicação transacional.

A replicação trata o primeiro cliente executado sp_replcmds em um determinado banco de dados como o leitor de log.

Esse procedimento pode gerar comandos para tabelas qualificadas pelo proprietário ou pode não qualificar o nome da tabela (o padrão). A adição de nomes das tabelas qualificados permite a replicação de dados de tabelas de propriedade de um usuário específico em um banco de dados para tabelas de propriedade do mesmo usuário em outro banco de dados.

Como o nome da tabela no banco de dados de origem é qualificado pelo nome do proprietário, o proprietário da tabela no banco de dados de destino deve ter o mesmo nome do proprietário.

Os clientes que tentam executar sp_replcmds no mesmo banco de dados recebem o erro 18752 até que o primeiro cliente se desconecte. Depois que o primeiro cliente se desconecta, outro cliente pode executar sp_replcmdse se torna o novo leitor de log.

Uma mensagem de aviso número 18759 será adicionada ao log de erros do SQL Server e ao log de aplicativos do Microsoft Windows, se sp_replcmds não for possível replicar um comando de texto porque o ponteiro de texto não foi recuperado na mesma transação.

Permissões

Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_replcmdso .