SQL Server 2012视图中的动态SQL连接

SQL Server 2012视图中的动态SQL连接,sql,dynamic,sql-server-2012,sql-view,Sql,Dynamic,Sql Server 2012,Sql View,我真的不知道该如何称呼这个问题,因为我不太确定确切的术语,但是我只是想知道是否可以在视图中设置动态数据库连接。 我们有一个查看两个不同数据库的视图。数据库名称存储在另一个表中,假设这些列被称为dbID1和dbID2 exampleView SELECT a.ID, b.name FROM db1.dbo.IDNumbers a INNER JOIN db2.dbo.Employees b ON a.ID = b.ID 在exampleView中,数据库被硬编码为db1.dbo和db2.dbo

我真的不知道该如何称呼这个问题,因为我不太确定确切的术语,但是我只是想知道是否可以在视图中设置动态数据库连接。 我们有一个查看两个不同数据库的视图。数据库名称存储在另一个表中,假设这些列被称为dbID1和dbID2

exampleView
SELECT a.ID, b.name 
FROM db1.dbo.IDNumbers a
INNER JOIN db2.dbo.Employees b ON a.ID = b.ID

在exampleView中,数据库被硬编码为db1.dbo和db2.dbo,是否可以根据其他表的值动态设置该db1或db2?我意识到这可能是一个愚蠢的示例,但它只是为了演示。

您需要将请求编写为字符串NVARCHARMAX,然后运行EXEC

DECLARE @myRequest NVARCHAR(MAX)
SELECT @myRequest = SELECT  'SELECT * FROM (' + dbID1 + ').IDNumbers' FROM settings WHERE key = 'TableName' 
EXEC (@myRequest)

希望这有帮助

你想把数据库名作为字符串之类的输入参数吗?老实说,我真的不知道如何开始寻找一种方法来做到这一点。。。我能想出的最好办法就是用这样的东西。。。从settings.IDNumbers中选择dbID1