如何以通用方式引用另一个数据库

时间:2013-08-07 12:35:24

标签: sql sql-server-2005

我们有实时和演示系统,每个系统都使用一对数据库。 一个数据库经常从另一个数据库报告。

演示网站经常有这样的参考

SELECT  Columns
FROM    OtherDatabase_demo.dbo.Tablename

所以直播版会说:

...FROM    OtherDatabase.dbo.Tablename

当涉及到publsihing时,我比较了live和demo之间的存储过程(在我的例子中使用dbForge Schema Compare),每个不同的引用都会突出显示,并产生很多噪音。

有没有办法抽象这些引用,以便我可以在一个位置进行区分?

1 个答案:

答案 0 :(得分:9)

是的,请使用同义词。在一个数据库中:

CREATE SYNONYM dbo.MyTableName FOR OtherDatabase_demo.dbo.Tablename;

在实时版本中:

CREATE SYNONYM dbo.MyTableName FOR OtherDatabase.dbo.Tablename;

现在你的脚本可以说......

SELECT  Columns
FROM    dbo.MyTableName

...在两个数据库中,允许您的程序相同。

您的差异脚本可能会为同义词选择不同的定义,但希望您可以忽略这些定义(使用该工具或只是有意识地)。

我们已经要求对数据库进行别名的能力,但他们不了解这可能有多大用处:

http://connect.microsoft.com/SQLServer/feedback/details/311079/expand-synonym-to-other-entities-database-linked-server

http://connect.microsoft.com/SQLServer/feedback/details/288421/allow-create-synonym-for-database