Eu tenho um banco de dados que é usado para relatórios de serviços. Este banco de dados foi criado por um empreiteiro que não existe mais. Enterradas em todo o banco de dados estão as referências a uma única tabela em um servidor vinculado. O conteúdo desse servidor vinculado está sendo movido e o servidor sendo desativado.
Em vez de procurar todas as referências do servidor vinculado e atualizá-las para apontar para o novo servidor vinculado ou alterá-las para usar um nome de sinônimo, seria possível (ou aceitável) criar o novo servidor vinculado e adicionar um sinônimo que usa o mesmo nome que a referência de servidor vinculado totalmente qualificada atual, mas aponta para o novo servidor vinculado? Isso me permitiria deixar todo o código do banco de dados intacto e minimizar a interrupção dos usuários corporativos.
Aqui está o que eu estou pensando. O servidor vinculado atual é SRAPP. Todas as consultas usando o servidor vinculado apontam para OPub.dbo.ADE.
exec sp_addlinkedserver @server=SQLProd1
Então
CREATE SYNONYM [SRAPP.OPub.dbo.ADE]
FOR SQLProd1.OPub.dbo.ADE
GO
Finalmente,
exec sp_dropserver 'SRAPP'
O SQL Server ficará confuso com um nome de sinônimo que parece idêntico a uma referência de servidor vinculada?
Você tentou sua ideia? Quais foram seus resultados? Sim, você pode criar um
synonym
como:Mas você não pode usar um sinônimo para um servidor vinculado. Além disso, a partir do SQL Server 2016, existe a seguinte limitação:
Recomendação: elimine e recrie o servidor vinculado 'SRAPP'. Você pode ajudar a si mesmo criando o script da definição existente. Elimine o servidor vinculado existente e recrie-o usando o novo nome do servidor.
A partir do SQL Server 2016 só
synonyms
pode ser definido para:Sim, há muitas coisas que podemos conceber sobre sinônimos, mas ainda não existem.
Um sinônimo é um objeto de banco de dados pertencente a um esquema. Para selecionar usando seu esquema, ficaria assim:
Sem chance de confusão aí.
Se o servidor antigo estiver sendo desativado (colocar offline), peça ao pessoal de TI para definir a entrada DNS do nome do servidor desativado para apontar para o novo servidor que assumirá o controle. Não é a solução mais limpa, mas você não precisa atualizar nada no banco de dados e a conexão do servidor vinculado permanece no lugar.
O primeiro problema aqui é que seu sinônimo NÃO parece idêntico a uma referência de servidor vinculada. Ao usar colchetes
[]
, você está dizendo para tratar os pontos como qualquer outro caractere e não separar o SRAPP para tratá-lo como um servidor, banco de dados , esquema etc...Dito isso, se você remover os colchetes, pelo menos terá esse problema
Não conheço uma maneira de usar um sinônimo para um servidor vinculado que seria a resposta ideal aqui. Tanto quanto eu posso dizer, acho que você terá que atualizar essas referências. Para a menor quantidade de trabalho, você pode configurar o sinônimo como você tem aqui, que deve funcionar e, em seguida, encontrar as referências e apenas adicionar os colchetes para que correspondam ao sinônimo.