Estamos tentando testar o sucesso das replicações transacionais. pesquisando no Google, descobri que preciso executar em nosso editor este procedimento armazenado:
No entanto, quando eu executo:
exec sys.sp_publication_validation
@publication=ReplicationFaouzi,
@rowcount_only=0,
@full_or_fast=0,
@shutdown_agent=0
Eu recebo este erro:
Msg 20026, Nível 16, Estado 1, Procedimento sp_MSpublication_validation, Linha 57 A publicação 'ReplicationFaouzi' não existe ?
Quando eu executo este sql:
SELECT publication
FROM MSpublications
ORDER BY publication
Eu recebo no Resultado:
ReplicationFaouzi
o que está errado ?
Atualizar
Ao verificar o código deste procedimento armazenado, descobri que ele chama o procedimento armazenado não encontrado sys.sp_MSreplcheck_publish e sys.sp_MSrepl_getpublisherinfo :
exec @retcode = sys.sp_MSreplcheck_publish
if @@error <> 0 or @retcode <> 0
begin
return (1)
end
EXEC @retcode = sys.sp_MSrepl_getpublisherinfo @publisher = @publisher,
@publisher_type = @publisher_type OUTPUT,
@rpcheader = @cmd OUTPUT
sys.sp_MSreplcheck_publish existe em um banco de dados chamado model e não consigo encontrar sys.sp_MSrepl_getpublisherinfo !!
Atualização 2
Minha equipe recriou o banco de dados de replicação e agora este comando sql:
SELECT [name] FROM sys.databases WHERE is_published = 1;
não retorna nenhum valor, mas isso:
SELECT [name] FROM sys.databases WHERE is_merge_published = 1;
retorna 'Guichet'
Agora, quando eu executo:
USE [Guichet];
GO
EXEC sp_helppublication;
não recebo nada!
Você precisa executar esse procedimento no contexto do banco de dados de publicação (o banco de dados que é a fonte dos dados que deseja replicar). Você pode fazer isso com uma
USE
declaração:Se você não tiver certeza de qual banco de dados é o banco de dados de publicação, execute esta consulta para descobrir quais bancos de dados estão configurados como editores:
Depois de obter o nome do banco de dados dessa consulta, você pode executá-lo para ver o nome das publicações reais que devem ser passadas para o
sp_publication_validation
. No seu caso, o editor se chamaGuichet
, então você executaria:Isso lhe dará o valor que precisa ser passado para o
@publication
parâmetro.Observe que todos os itens acima são escritos no contexto da replicação de transações (que é sobre o que era a pergunta original). Diferentes etapas são necessárias para diferentes tipos de replicação.
Há um ótimo script de "coleta de informações" no site do Microsoft Docs que orienta a obtenção de informações sobre distribuidores e editores ao usar diferentes tipos de replicação:
Script de informações do distribuidor e editor