Estou usando exibições e procedimentos armazenados que fazem referência a um servidor vinculado:
SELECT Id, Name
FROM [LinkedServer].Database.dbo.FooView
Gostaria de ocultar [LinkedServer].Database
ou pelo menos [LinkedServer]
parte de minhas exibições e procedimentos armazenados. Dessa forma, eu seria capaz de ter um código "agnóstico de servidor", que seria facilmente comparado entre servidores de produção e de desenvolvimento.
Isso pode ser feito no nível do servidor (como o servidor vinculado) ou no nível do banco de dados (onde estão as exibições e os procedimentos armazenados que o utilizam).
Depois é só usar
dbo.FooView
em seus SPs e eles podem ser os mesmos entre produção e dev.Observe que isso é apenas para SQL 2005 e superior.
Uma solução para o SQL 2000 pode ser usar exibições APENAS
SELECT * FROM [LinkedServer].Database.dbo.FooView
sem nenhum outro código nelas. Você pode ter uma metatabela com a lista desses nomes de exibição e as fontes nomeadas correspondentes. Em seguida, escreva um SP que percorra a tabela e (re)crie as exibições conforme necessário. Então, se você quiser mudar para onde as visualizações apontam, execute seu SP com o novo nome do servidor vinculado como parâmetro (ou mantenha-o na metatabela e atualize-o) e todos os seus objetos dependentes apontarão silenciosamente para o novo local agora. Contanto que os nomes das colunas, posições e tipos de dados sejam os mesmos, funcionará bem.