3

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

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

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

有人知道为什么会发生这种情况吗?EXECUTE @var失败,EXECUTE 'string'工作...

4

2 回答 2

5

我认为是: exec @mystr --assumes 该字符串是一个过程名称,并且限制为 8000 字节

exec (@mystr) -- 有 2 GB 的限制。

于 2012-12-09T22:53:13.340 回答
3

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

对字符串使用 EXECUTE

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

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

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

于 2012-11-26T15:18:00.977 回答