从不同数据库连接2个表的最佳方法是什么?

dcp*_*ers 5 t-sql sql-server

从不同数据库连接2个表的最佳方法是什么?在我的情况下,我有一个开发数据库,​​具有postfix,如_DEV,而生产中有_PROD.

问题是,如果我加入这两个表,我必须引用一个完整的数据库名称,如DB1_DEV.dbo.table1 INNER JOIN DB2_DEV.dbo.table100

虽然工作得很好但是如果你想把它转移到生产中,那将是一个噩梦,因为我必须改变这些.

谢谢

Jos*_*lio 10

您可以使用同义词来简化查询.例如:

-- Create a synonym for the Product table in AdventureWorks.
USE tempdb;
GO
CREATE SYNONYM MyProduct
FOR AdventureWorks.Production.Product;
GO

-- Query the Product table by using the synonym.
USE tempdb;
GO
SELECT ProductID, Name FROM MyProduct WHERE ProductID < 5;
GO
Run Code Online (Sandbox Code Playgroud)

编辑:您可以为相关表定义同义词.在查询表的任何位置使用同义词而不是全名.

部署到生产环境时,您只需更改同义词即可.

  • 这也是我使用的方法,但我使用AdventureWorksProductionProduct的命名法(将整个限定名称填入同义词名称).您使用规范数据库名称作为名称而不是物理名称,因此无论引用的物理数据库是什么,完整同义词都是有意义的. (3认同)

Ran*_*pho 1

这里有一个建议:将您的 Dev 和 Prod 数据库移动到具有相同名称的不同服务器集群。

如果您不能或不愿这样做,我建议您找到某种方法在查询中参数化数据库名称。