Eu tentei pesquisar no Google por uma resposta para isso, mas não cheguei a lugar nenhum.
Eu tenho uma instância do SQL Server cuja replicação está configurada para ser um publicador e um distribuidor de FooDatabase
. Eu tenho uma segunda instância cuja replicação está configurada para ser um assinante FooDatabase
na primeira instância. As atualizações de replicação funcionam. O que eu quero fazer é fazer backup da assinatura FooDatabase
, excluí-la na instância do assinante e restaurar o backup. No entanto, quando faço isso e tento restaurar o backup, recebo o seguinte erro:
Falha na restauração do servidor 'DAVEG1525-162'. (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: Nome de objeto inválido 'master.dbo.MSreplication_options'. (Microsoft.SqlServer.Smo)
Eu verifiquei e dbo.MSreplication_options
existe como uma tabela de sistema no master
banco de dados na instância de produção , mas não na instância de assinatura .
Minhas dúvidas são: se não existe na instância de assinatura, por que está sendo incluído no backup feito a partir da instância de assinatura do SQL Server? e como posso corrigir esse problema?
Pelo que sei, a tabela
master.dbo.MSreplication_options
, entre várias outras tabelas relacionadas à replicação, deve existir em qualquer instalação do SQL Server 2008 r2, independentemente de você ter configurado a replicação ou não. De alguma forma, o da minha instância do SQL Server foi descartado. Acabei encontrando este script útil no Google (em cache!) Que 'conserta' várias coisas de replicação, incluindo a recriaçãomaster.dbo.MSreplication_options
, se ainda não existir:After I ran this, I was able to import my backed-up DB on the subscriber without error.