繁体   English   中英

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

[英]What is best approach of joining 2 tables from different Database?

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

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

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

谢谢

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

-- 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

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

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

根据您的具体情况,SYNONYM可能是最佳答案,也可能是VIEW。

带有VIEW的示例:

CREATE VIEW table1 AS SELECT * FROM DB1_DEV.dbo.table1

之后,当你搬到PROD时:

ALTER VIEW table1 AS SELECT * FROM DB1_PROD.dbo.table1

就像使用SYNONYM一样,更新神奇地修复了所有简单引用“table1”的查询。

以下是解释同义词和观点之间差异的讨论:

使用同义词与视图有什么优缺点?

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

如果您不能或不会这样做,我建议您找到一些方法来在查询中参数化您的数据库名称。

您必须将您的架构名称存储在数据库中的某个位置。 获取该模式名称并构建动态sql。 并使用oracle内部包DBMS_SQL.EXECUTE()来执行您的选择查询。

然后,当你转移到PROD时,你不必改变任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM