简体   繁体   English

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

[英]Dynamic SQL Connection in SQL Server 2012 views

I don't really know what to title this question as because I'm not too sure about the exact terminology, however I just wanted to know if it is possible to set up a dynamic database connection inside a view. 我真的不知道该问题的标题是什么,因为我不太确定确切的术语,但是我只是想知道是否有可能在视图中建立动态数据库连接。
We have a view which looks at 2 different databases. 我们有一个查看两个不同数据库的视图。 The database names are stored in another table, lets say the columns are called dbID1 and dbID2... 数据库名称存储在另一个表中,可以说这些列称为dbID1和dbID2 ...

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

In the exampleView the databases are hardcoded as db1.dbo and db2.dbo, is it possible to have that db1 or db2 set dynamically based on the values other table? 在exampleView中,数据库被硬编码为db1.dbo和db2.dbo,是否可以根据其他表的值动态设置db1或db2? I realize this is probably a silly example but it is just to demonstrate. 我意识到这可能是一个愚蠢的例子,但这只是为了演示。

You need to compose your request as a string ( NVARCHAR(MAX) ), then run EXEC. 您需要将请求组成为字符串(NVARCHAR(MAX)),然后运行EXEC。

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

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM