执行@Var字符限制SQL Server 2008 R2
我一直在寻找答案,但没有什么是明确的,所以希望有人知道他们的头顶上 对执行@Var字符限制SQL Server 2008 R2,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,我一直在寻找答案,但没有什么是明确的,所以希望有人知道他们的头顶上 对VARCHAR(MAX)变量使用EXECUTE时,是否有字符限制?我做了一些实验,似乎当加载一个变量,然后调用EXECUTE@var,实际传递到服务器的内容有一个字符限制。在不使用变量调用EXECUTE并在那里构建字符串时,一切似乎都正常。。。。这有什么原因吗?返回的错误消息是: 名称“(在我的SQL语句变量的881个字符中插入大约643个字符)”不是有效标识符 有人知道为什么会发生这种事吗执行@var失败,执行“字符串”工作
VARCHAR(MAX)
变量使用EXECUTE
时,是否有字符限制?我做了一些实验,似乎当加载一个变量,然后调用EXECUTE@var
,实际传递到服务器的内容有一个字符限制。在不使用变量调用EXECUTE
并在那里构建字符串时,一切似乎都正常。。。。这有什么原因吗?返回的错误消息是:
名称“(在我的SQL语句变量的881个字符中插入大约643个字符)”不是有效标识符
有人知道为什么会发生这种事吗<代码>执行@var失败,
执行“字符串”
工作正常 根据msdn,在SQL Server 2008中,限制似乎是最大为2 GB的字符串:
使用字符串执行
在早期版本的SQL Server中,字符串限制为8000字节。这需要连接大字符串以进行动态执行。在SQL Server中,可以指定varchar(max)和nvarchar(max)数据类型,以允许字符串最多为2 GB的数据
所有的信息
如果您遇到问题,可能是您连接变量上字符串的方式。我认为是:
exec@mystr
--假定字符串是过程名称,且限制为8000字节
执行官(@mystr)
--有2G的限制 您试图执行的字符串是什么?可变长度、非Unicode字符串数据。n定义字符串长度,可以是1到8000之间的值。max表示最大存储大小为2^31-1字节(2 GB)。存储大小是输入的数据的实际长度+2字节。varchar的ISO同义词是char VARINGING或char VARINGING。不确定您是从哪里学会语法的,但您希望使用
EXEC(@var)
(这些括号很重要!)或者更好的是,EXEC sp_executesql@var代码>。将来,除了您收到的错误消息之外,还可以列出您正在使用的代码。(此外,您将希望对动态SQL使用NVARCHAR(MAX)
,而不是VARCHAR(MAX)
)我不敢相信我忽略了这一点!你完全正确,我需要在变量周围加上()。我现在进入了一个糟糕的角落……为了扩展语句,“如果您有问题,可能是您连接变量上字符串的方式。”请查看以下答案:。