即使使用NVARCHAR(MAX),动态SQL查询也不能存储超过4000个字符

时间:2018-06-13 12:02:50

标签: sql sql-server sql-server-2012

在SQL Server中构建动态查询时,我遇到了一个相当奇怪的问题。我声明了一个NVARCHAR(MAX)类型的变量,并在其中构建一些查询,稍后使用sp_executesql运行它们。

这些查询中的一个或两个非常大,超过了4000个字符限制,据说NVARCHAR(MAX)可以克服。但是,我仍然遇到将整个查询存储在变量中的经典问题!

我阅读了在线文档,其中许多建议我们可以将最多2 GB的数据存储到NVARCHAR(MAX)变量中,但我不知道为什么它不会在变量中存储超过4000个字符。

任何帮助将不胜感激。

编辑 - 添加了示例代码

DECLARE @qry NVARCHAR(MAX);

SET @qry = N'SELECT * FROM Table1 t1' + N'INNER JOIN Table2 t2 ON t1.Col1 = t2.Col2' + N'INNER JOIN Table3 t3 ON t1.Col1 = t2.Col3'

EXEC sp_executeSQL @qry

上面只是一个包含较少字符的示例查询,我的实际查询构建包含大约6000个字符。

0 个答案:

没有答案