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),每个不同的引用都会突出显示,并产生很多噪音.
有没有办法抽象这些引用,所以我可以在一个位置进行区分?
是的,使用同义词.在一个数据库中:
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/288421/allow-create-synonym-for-database