2

我很清楚 MS SQL Server 不允许在 OPENQUERY 语句中使用变量,并且我知道解决方法。

我想知道的是,有谁知道为什么不允许使用变量或连接字符串?

这导致人们跳过的箍简直令人震惊,而且它与 EXEC 等其他功能不符。

任何人都可以对此发表评论吗?我必须在 MS 贿赂谁才能解决他的问题?

4

2 回答 2

3

该限制是由 SQL Server 中实现链接服务器的方式及其依赖库的工作方式引起的。有一整套用于传递 SQL 命令的库,它们都有不同的可变大小和缓存大小。OCBC 驱动程序本身存在一些限制,因此 8k 是 Microsoft 的安全选择。不允许您传递变量只会强制执行 8k 限制规则。

于 2009-11-11T10:10:40.843 回答
1
declare @v1 varchar(max)

EXEC('SELECT * FROM OPENQUERY (<linkedserver>, ''SELECT * FROM <table> WHERE <column> = ''''' + @v1 + ''''''')')
于 2010-01-08T19:49:41.973 回答