Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行@Var字符限制SQL Server 2008 R2_Sql_Tsql_Sql Server 2008 R2 - Fatal编程技术网

执行@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)
)我不敢相信我忽略了这一点!你完全正确,我需要在变量周围加上()。我现在进入了一个糟糕的角落……为了扩展语句,“如果您有问题,可能是您连接变量上字符串的方式。”请查看以下答案:。