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

gai*_*ndo 2 sql sql-server-2005

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

演示网站通常都有这样的参考

SELECT  Columns
FROM    OtherDatabase_demo.dbo.Tablename
Run Code Online (Sandbox Code Playgroud)

所以现场版会说:

...FROM    OtherDatabase.dbo.Tablename
Run Code Online (Sandbox Code Playgroud)

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

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

Aar*_*and 9

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

CREATE SYNONYM dbo.MyTableName FOR OtherDatabase_demo.dbo.Tablename;
Run Code Online (Sandbox Code Playgroud)

在现场版中:

CREATE SYNONYM dbo.MyTableName FOR OtherDatabase.dbo.Tablename;
Run Code Online (Sandbox Code Playgroud)

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

SELECT  Columns
FROM    dbo.MyTableName
Run Code Online (Sandbox Code Playgroud)

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

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

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

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