在DEV,UAT,Live中联接跨数据库

时间:2019-05-31 10:10:27

标签: sql tsql

我有这样的加入

 USE [PriceBook]...
    FROM [MidasLiveWeb].[ProductCatalogue].[HardwareMake] mk
        JOIN [MidasLiveWeb].[ProductCatalogue].[HardwareModel] mo
  ON mo.HardwareMake_Id = mk.Id

       INNER JOIN MidasLiveWeb.ProductCatalogue.HardwareModelHardwareType AS hmht
      ON hmht.HardwareModel_Id = mo.Id
INNER JOIN MidasLiveWeb.ProductCatalogue.HardwareType AS ht
      ON ht.Id = hmht.HardwareType_Id

但是在UAT中它应该看起来像...

       USE [PriceBookUAT]
       FROM [MidasUATWeb].[ProductCatalogue].[HardwareMake] mk
       JOIN [MidasUATWeb].[ProductCatalogue].[HardwareModel] mo
      ON mo.HardwareMake_Id = mk.Id
        INNER JOIN MidasUATWeb.ProductCatalogue.HardwareModelHardwareType AS hmht
        ON hmht.HardwareModel_Id = mo.Id
INNER JOIN MidasUATWeb.ProductCatalogue.HardwareType AS ht
        ON ht.Id = hmht.HardwareType_Id

我使用RedGate工具带进行源代码控制,我可以使用模式比较将文件从测试复制到实时运行,但是我必须进行手动更改。问题是我要访问同一服务器上的其他数据库(一个连接字符串),否则我可能只有相同的代码,只是一个不同的IP地址。但是SQL Server Lics很昂贵,因此很少见。 另一个方法(例如使用EF6)将是在代码中包含SQL并进行字符串转换-我们使用存储过程来提高性能。 如果我们不将SQL保留在redGate源代码控制中,而是在VS项目中,则可以使用T4转换。我们的DBA在主表中建议Synomyms,它在LIVE / UAT / DEV之间共享,因此很少使用。

我有这样的加入

   USE [PriceBook];...
    FROM [MidasLiveWeb].[ProductCatalogue].[HardwareMake] mk
    JOIN [MidasLiveWeb].[ProductCatalogue].[HardwareModel] mo
    ON mo.HardwareMake_Id = mk.Id
    INNER JOIN MidasLiveWeb.ProductCatalogue.HardwareModelHardwareType AS hmht
    ON hmht.HardwareModel_Id = mo.Id
    INNER JOIN MidasLiveWeb.ProductCatalogue.HardwareType AS ht
    ON ht.Id = hmht.HardwareType_Id

但是在UAT中它应该看起来像...

     USE [PriceBookUAT];
       FROM [MidasUATWeb].[ProductCatalogue].[HardwareMake] mk
        JOIN [MidasUATWeb].[ProductCatalogue].[HardwareModel] mo
        ON mo.HardwareMake_Id = mk.Id
        INNER JOIN MidasUATWeb.ProductCatalogue.HardwareModelHardwareType AS hmht
        ON hmht.HardwareModel_Id = mo.Id
        INNER JOIN MidasUATWeb.ProductCatalogue.HardwareType AS ht
        ON ht.Id = hmht.HardwareType_Id

几乎就像我需要可以在转换或预部署脚本中使用的%DBname%var一样。 如

 %DBname% ='UAT'
  USE [PriceBook%DBname%] or
   Select * from [Midas%DBname%Web].[ProductCatalogue].[HardwareMake]

0 个答案:

没有答案