最佳答案
总之,我有一个大的(不可避免的)动态 SQL 查询。由于选择条件中字段的数量,包含动态 SQL 的字符串正在增长超过4000个字符。现在,我知道 NVARCHAR(MAX)
的最大值是4000,但是请查看服务器事件探查器中执行的 SQL 语句
DELARE @SQL NVARCHAR(MAX);
SET @SQL = 'SomeMassiveString > 4000 chars...';
EXEC(@SQL);
GO
Seems to work(!?), for another query that is also large it throws an error which is associated with this 4000 limit(!?), it basically trims all of the SQL after this 4000 limit and leaves me with a syntax error. Despite this in the profiler, it is showing this dynamic SQL query in 满了(!?).
这里到底发生了什么,我是否应该只是将@SQL 变量转换为 VARCHAR 并继续下去?
谢谢你抽出时间。
P.如果能够打印出超过4000个字符来查看这些大型查询,那也是很不错的。以下限制为4000
SELECT CONVERT(XML, @SQL);
PRINT(@SQL);
还有别的好办法吗?