EXECUTE @Var字符限制SQL Server 2008 R2

问题描述 投票:2回答:2

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

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

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

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

sql tsql sql-server-2008-r2
2个回答
3
投票

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

exec(@mystr) - 有2千兆字节的限制。


3
投票

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

将EXECUTE与字符串一起使用

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

Here is the link提供所有信息。

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

© www.soinside.com 2019 - 2024. All rights reserved.