Les servers liés causent des problèmes pour la maintenance des scripts de construction

J'ai une database de test et une database de développement. À l'heure actuelle, j'ai besoin de deux versions de tous nos scripts parce que j'ai un server lié et le nom change entre chacun d'eux en partie parce que les bases de données ont des noms différents.

Comment les gens se débrouillent-ils? Nous avons parlé de build des tâches qui font un rlocation de find, mais j'espérais une meilleure façon plus élégante.

Vous pouvez créer des synonymes pour les objects dont vous avez besoin à la place des instructions complètes. Par exemple:

SELECT * FROM [linked_server_name].[test_database_name].[dbo].[table_1] 

… qui comprend les segments suivants …

 [linked server].[database].[schema].[object] 

Puisque c'est assez verbeux, vous pouvez créer un synonyme pour l'object de l'exemple ci-dessus en émettant ce qui suit:

 CREATE SYNONYM [dbo].[table_1] FOR [linked_server_name].[test_database_name].[dbo].[table_1] 

… et votre requête devient:

 SELECT * FROM [dbo].[table_1] 

Vous pouvez générer un synonyme pour toutes les tables de votre database avec le script suivant et le replace par les noms de vos objects:

  SELECT 'CREATE SYNONYM ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) + ' FOR [SQL-SOURCE1].' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) FROM [linked_server_name].[test_database_name].[INFORMATION_SCHEMA].Tables WHERE TABLE_TYPE = 'BASE TABLE'