我一直在寻找答案,但没有什么是明确的,所以希望有人知道他们的头脑。
当使用带有EXECUTE
变量的VARCHAR(MAX)
时,是否有字符限制?我做了一些实验,似乎在加载一个变量然后调用EXECUTE @var
时,对实际传递给服务器的内容有一个字符限制。当在没有变量的情况下调用EXECUTE
并且只在那里构建字符串时,一切似乎都有效......这是有原因的吗?返回的错误消息是:
名称'(在我的SQL语句变量的881个字符中插入约643个)'不是有效的标识符
有没有人知道为什么会发生这种情况? EXECUTE @var
失败,EXECUTE 'string'
工作......
我以为是:exec @mystr - 假设字符串是一个过程名称,并且限制为8000字节
exec(@mystr) - 有2千兆字节的限制。
根据msdn,在SQL Server 2008中,限制似乎是最多2 GB的字符串:
将EXECUTE与字符串一起使用
在早期版本的SQL Server中,字符串限制为8,000个字节。这需要连接大字符串以进行动态执行。在SQL Server中,可以指定varchar(max)和nvarchar(max)数据类型,以允许字符串最多2 GB的数据。
Here is the link提供所有信息。
如果遇到问题,可能就是连接变量字符串的方式。