2
根据传递给存储过程的参数,我有一种情况需要从超过100个数据库中的一个(全部使用完全相同的模式)获取数据。动态SQL - 根据参数查询不同的数据库
我一直在努力做到这一点的方法是建立一个动态的SQL语句sp_executesql
执行:
(这只是一个测试脚本BTW):
declare @sql nvarchar(1000)
set @sql = 'select top 10 * from [SERVER][email protected][LL]'
exec sp_executesql @sql, N'@dbName nvarchar(50)', @dbName = N'[TheDatabase1]'
这使错误Incorrect syntax near '@dbName'.
有没有其他的选择,我可以考虑?
PS - 数据库模式不在我的控制之内。
我认为可能是这样的 - 我只是担心查询计划会重复。有没有办法解决? –
@大卫 - 看到这些是不同的数据库,我会期望不同的查询计划。除了通过串联动态构建它们之外,我不相信有任何解决方法。阅读文章 - 它可能会给你一些想法。 – Oded