Como restaurar a replicação após falha do servidor


8

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 .mdfarquivos 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 .mdfarquivos 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 distributionbanco 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 syspublicationsambos em mastere 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 .

Respostas:


4

No final, eu simplesmente fiz o que o servidor queria, ou seja, criei todas as tabelas de "publicação" (* dbo.MSpeer _ ** e * dbo.sys **) no banco de dados problemático (aquele que era o editor), através da Tabela de scripts Como -> CRIAR Para . Graças a este servidor, permiti-me desativar a publicação e distribuição. Então, eu só precisava reconfigurar a replicação.

Espero que da próxima vez que ele travar (na verdade, espero que não ocorra), seremos sábios o suficiente para fazer backup completo das tabelas envolvidas na replicação.


Informações adicionais de Zane , originalmente deixadas em um comentário:

As tabelas dbo.MSpeer_ * e dbo.sys * também podem ser criadas configurando o distribuidor / editor em um servidor diferente com o SQL Server instalado. Isso criará essas tabelas no banco de dados que você definiu para publicação. Consulte -> Tabelas -> Tabelas do sistema no SSMS.

Em seguida, gere os esquemas para todas essas tabelas e crie-as no banco de dados problemático que permitirá desativar a distribuição e a publicação e reconfigurar o distribuidor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.