Eu tenho um banco de dados em dois servidores de produção diferentes. Eu quero manter os esquemas consistentes entre os dois. Um tem trabalhos que chamam procedimentos armazenados que fazem referência a um servidor vinculado. O outro não contém (e não deve) esses trabalhos ou um servidor vinculado com o mesmo nome do primeiro servidor, mas desejo que ambos os servidores tenham os mesmos procedimentos armazenados. No entanto, o SQL Server se recusa a criar os procedimentos que fazem referência ao Linked Server no servidor que não possui Linked Server configurado. Entendo por que isso acontece, mas preciso de uma solução alternativa que não envolva alterar o código do procedimento (como usar SQL dinâmico para ocultar a referência do compilador).
Tentei criar um servidor vinculado com o nome esperado que aponta para o servidor local, mas o SQL Server é inteligente o suficiente para ver que as tabelas referenciadas não existem nesse servidor vinculado. Se eu criar um para um servidor inexistente, o SQL expira durante a criação do procedimento, informando que não foi possível conectar-se ao servidor remoto.
Existe alguma maneira de criar um servidor vinculado fictício de modo que o SQL Server não tente validar os nomes das tabelas no servidor vinculado?
Crie tabelas falsas e vazias no servidor local para que a criação do procedimento possa acontecer.
Altere o código do procedimento para usar sinônimos de duas partes. No servidor que precisa usar o servidor vinculado:
No servidor local que não precisa que as referências remotas existam:
O procedimento armazenado usando o último pode ser criado graças à resolução de nome adiada (que não funciona ao criar um procedimento que faz referência a um servidor vinculado). Isso exigirá a alteração do código do procedimento armazenado, mas será uma alteração única.
você pode criar um servidor vinculado que não leva a lugar nenhum
Então qualquer consulta notifica que o servidor vinculado está lá, mas não tem acesso a nada dentro dele. você descobrirá com bastante frequência que as consultas para servidores vinculados (tanto quanto sei) apenas verificam o servidor vinculado (já que você está declarando que não é um banco de dados SQL, ele não parece verificar tantos detalhes ele presume que você sabe o que está fazendo (se você fizer isso na GUI, receberá um aviso, mas ainda poderá criar o servidor vinculado sem que ele registre que pode se conectar.
Não tenho certeza se esta é uma solução aceitável para o que você está procurando, já que você está realmente criando um servidor vinculado, mas é essencialmente um manequim, pois não leva a lugar nenhum, se você já tentou acessá-lo, obteria um erro de login