Eu tenho um procedimento armazenado que se refere a um servidor vinculado. Em vários lugares ao longo do procedimento, tenho algo parecido com o seguinte:
INSERT INTO [TableName]
(...Columns...)
SELECT ...Columns...
FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName]
WHERE TableNameID = @TableNameID
Este procedimento existe no meu ambiente de desenvolvimento, ambiente de teste e ambiente ao vivo.
O problema é que cada cópia do procedimento é sutilmente diferente porque os nomes dos servidores são diferentes para cada ambiente. Isso torna o gerenciamento da implantação de atualizações de script problemático.
Existe uma maneira de tornar o procedimento portátil para que cada ambiente possa executar versões idênticas?
Caso contrário, há algo que eu possa fazer para tornar a implantação de scripts menos propensa a erros / erros?
sql-server
sql-server-2008
stored-procedures
linked-server
Doctor Jones
fonte
fonte
SELECT <fields> FROM <linked server>
, mas usar o mesmo nome vista em todos os servidores para manter o código mantidoRespostas:
O nome do seu servidor vinculado não precisa ser o nome do servidor. Você pode usar um nome genérico.
Configure o servidor vinculado em cada ambiente com o mesmo nome, mas aponte-o para servidores diferentes.
fonte
Eu gosto da ideia de usar um nome de servidor vinculado genérico. No entanto, em muitos ambientes, isso pode não ser possível. Nesse caso, você pode usar SQl dinâmico em seu sp.
fonte