tEXECUTE @Var字符限制 SQL Server 2008 R2



我一直在寻找这个问题的答案,但没有什么是明确的,所以希望有人知道他们的头顶。

EXECUTEVARCHAR(MAX)变量一起使用时,是否有字符限制?我做了一些实验,似乎当加载一个变量然后调用EXECUTE @var时,实际传递到服务器的内容有字符限制。当调用没有变量的EXECUTE并在那里构建字符串时,一切似乎都正常......这有什么原因吗?返回的错误消息是:

名称 ' (在此处插入我的 SQL 语句变量的 643 个字符中的 881 个字符)' 不是有效的标识符

有谁知道为什么会发生这种情况? EXECUTE @var失败,EXECUTE 'string'有效...

我认为

是:执行@mystr--假设字符串是过程名称,限制为 8000 字节

执行 (@mystr)--具有 2 GB 的限制。

在 SQL Server 2008 中,根据 msdn,限制似乎是最大 2 GB 的字符串:

将 EXECUTE 与字符串一起使用

在早期版本的 SQL Server 中,字符串限制为 8,000 个字节。这需要连接大字符串以进行动态执行。在 SQL Server 中,可以指定允许字符串最多包含 2 GB 数据的 varchar(max) 和 nvarchar(max) 数据类型。

这是包含所有信息的链接。

如果您遇到问题,可能是您在变量上连接字符串的方式。

最新更新