Partilhar via


sp_replcmds (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Retorna os comandos para transações marcadas para replicação. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Importante

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

Transact-SQL convenções de sintaxe

Sintaxe

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

Argumentos

Importante

Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.

[ @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 O ID do artigo.
partial_command pouco Indica se esse comando é parcial.
command varbinary(1024) O valor do comando.
xactid binário(10) ID da transação.
xact_seqno varbinary(16) O número de sequência da transação.
publication_id int O ID da publicação.
command_id int ID do comando no MSrepl_commands.
command_type int Tipo de comando.
originator_srvname sysname Servidor de origem da transação.
originator_db sysname Base de dados de origem da transação.
pkHash int Apenas para uso interno.
originator_publication_id int ID da publicação de origem da transação.
originator_db_version int Versão da base de dados de origem da transação.
originator_lsn varbinary(16) Identifica o número de sequência de log (LSN) 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 que executa sp_replcmds em um determinado banco de dados como o leitor de log.

Este procedimento pode gerar comandos para tabelas qualificadas pelo proprietário ou não qualificar o nome da tabela (o padrão). A adição de nomes de 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 ser o mesmo nome de proprietário.

Os clientes que tentam executar sp_replcmds dentro do 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 logs.

Um número de mensagem de aviso 18759 é adicionado ao log de erros do SQL Server e ao log de aplicativos do Microsoft Windows, se sp_replcmds não conseguir 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_replcmds.