示例代码从不同数据库引用表,然后引用当前引用。引用T-SQL存储过程中的另一个数据库,而不对数据库名进行硬编码
use DB1
select * from SomeTableInDB1
select * from DB2..SomeTableInDB2
问题:其他数据库(“DB2”)的名称是否可以以某种方式进行软编码?
这样的事(我知道这是行不通的,但也许它使我的问题更清晰)
use DB1
varchar @OtherDB
set @OtherDB = "DB2"
select * from SomeTableInDB1
select * from @OtherDB..SomeTableInDB2
同义词的一个问题是,当你阅读代码时发生了什么并不明显。我想你可以通过命名约定来缓解这种情况。 – Andomar 2012-03-10 18:08:37
我喜欢这个!谢谢Aaron! 一个问题 - 可以在链接服务器的表上创建同义词。即另一个数据库存在于不同的物理服务器上 – 2012-03-10 18:27:35
是,CREATE SYNONYM dbo.foo FOR server.db.dbo.bar; – 2012-03-10 18:34:05