示例代码引用来自另一个数据库的表,然后打开当前数据库。
use DB1
select * from SomeTableInDB1
select * from DB2..SomeTableInDB2
问题:可以以某种方式对另一个数据库(“ DB2”)的名称进行软编码吗?
类似的东西(我知道这行不通,但也许会使我的问题更清楚)
use DB1
varchar @OtherDB
set @OtherDB = "DB2"
select * from SomeTableInDB1
select * from @OtherDB..SomeTableInDB2
您还可以使用一个同义词,我发现它比视图要干净一些(view shouldn't have SELECT *
,但随着基础表的更改也需要维护)。
SELECT *
这实际上只是一个重定向-基表中的索引仍然以相同的方式使用,等等。所以现在在DB1中,您可以说:
USE DB1;
GO
CREATE SYNONYM dbo.SomeTableInDB2 FOR DB2.dbo.SomeTableInDB2;
...无需对数据库进行硬编码。
有关更多信息,请参见SELECT * FROM dbo.SomeTableInDB2;
。