T-SQL 脚本中的动态数据库引用

Ant*_*lev 6 t-sql

我们有一组数据库(开发、QA 和生产,分别是dev-foo& dev-barqa-foo&qa-bar和 just foo& bar)。

foo数据库系列中,有一个视图应该使用各自的bar数据库进行跨数据库连接。换句话说,

select f.*, b.* from foo f inner join <bar-db>.dbo.bar b on f.barid = b.id
Run Code Online (Sandbox Code Playgroud)

问题是:有什么办法可以让我编写一次这个脚本,然后有一个数据库级变量<bar-db>指向一个适当的bar数据库“实例” ?

Ant*_*lev 9

答案是同义词

对系列中的每个数据库重复foo

create synonym bar for [srv-db].<bar-db>.dbo.bar;
Run Code Online (Sandbox Code Playgroud)

然后按如下方式使用它:

select f.*, b.* 
from foo f inner join bar b on f.barid = b.id ;
Run Code Online (Sandbox Code Playgroud)