Tínhamos dois bancos de dados em uma instância do SQL Server 2005 com replicação transacional entre eles (3 tabelas como artigos). Este servidor atuou como editor e distribuidor.
O RAID no servidor falhou. No entanto, conseguimos desanexar e copiar quase todos os .mdf
arquivos antes do acidente.
Após a restauração do sistema, reinstalamos o SQL Server, restauramos os bancos de dados do sistema (mestre, modelo, msdb) e colocamos os .mdf
arquivos nos mesmos caminhos. Então começou.
O problema apareceu com a replicação. A pasta Publicações locais estava vazia, embora a pasta Assinaturas locais contivesse a assinatura em questão. Quando tentei adicionar uma nova publicação, obtive:
O Assistente para Novas Publicações encontrou um ou mais erros ao recuperar os nomes das publicações.
Ocorreu uma exceção ao executar uma instrução ou lote Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Nome de objeto inválido 'dbo.syspublications'. (Microsoft SQL Server, erro: 208)
Decidi tentar remover a assinatura esquerda (eventualmente consegui) e desativar a publicação e distribuição no servidor, o que me deu:
O SQL Server não pôde desativar a publicação e distribuição em 'algum servidor'.
Nome de objeto inválido 'dbo.syssubscriptions'. A contagem de transações após EXECUTE indica que uma instrução COMMIT ou ROLLBACK TRANSACTION está ausente. Contagem anterior = 0, contagem atual = 1. A contagem de transações após EXECUTE indica que uma instrução COMMIT ou ROLLBACK TRANSACTION está ausente. Contagem anterior = 0, contagem atual = 1. A contagem de transações após EXECUTE indica que uma instrução COMMIT ou ROLLBACK TRANSACTION está ausente. Contagem anterior = 0, contagem atual = 1. A contagem de transações após EXECUTE indica que uma instrução COMMIT ou ROLLBACK TRANSACTION está ausente. Contagem anterior = 0, contagem atual = 1. A contagem de transações após EXECUTE indica que uma instrução COMMIT ou ROLLBACK TRANSACTION está ausente. Contagem anterior = 0, contagem atual = 1. Alterado o contexto do banco de dados para 'mestre'. (Microsoft SQL Server, erro: 208)
Parece que algumas informações não foram recuperadas dos backups do banco de dados do sistema (provavelmente o distribution
banco de dados pode estar faltando alguma coisa).
Também tentei seguir a resposta dada em incapaz de desativar a publicação e distribuição . Mas sem sucesso. Eu tentei criar syspublications
ambos em master
e distribution
, mas nada mudou.
Então, como posso fazer a replicação funcionar neste servidor?
Tentei publicar algum outro banco de dados no servidor e funcionou. Portanto, o problema parece estar conectado ao banco de dados publicado. Como posso esclarecê-lo para gerenciar criar uma nova publicação sobre ele?
System Tables
A subpasta do banco de dados com problema perde as tabelas de replicação criadas quando um banco de dados é publicado.
No monitor de replicação, posso ver essas assinaturas antigas, enquanto elas não estão disponíveis na pasta Replicação .