我使用了相当长的动态SQL语句(有点超过13000个字符),但是当我尝试执行它时,我注意到exec并没有完全读取语句并切割最后一部分关闭。动态SQL语句太长
我使用:
DECLARE @Statement nvarchar(max)
SET @Statement = N'[LONG STATEMENT]'
EXEC (@Statement)
我也注意到,它可以读取甚至更少的字符,如果我不使用括号中EXEC (@Statement)
我也尝试使用EXEC sp_executesql @Statement
它只是停止读取12482个字符后的语句... 我遇到了SQL-Server 2008 R2和SQL Server 2014的问题
编辑:好的,现在我发现了一些不同的东西。看来,声明的长度本身并不完全是问题。正如我在下面的评论中提到的那样,我使用这个很长的动态sql语句,因为我正在创建一个更新脚本,它添加了一个新的存储过程,并且在此过程中我使用的表名可能不同。所以我创建了变量,其中包含表名,并将这些变量与动态sql语句一起使用,所以我不需要更改我使用此更新脚本添加的过程和函数中的表名,而只是更改了内容变量。但是,如果我不使用这些变量并在语句中使用表格名称“hardcoded”,则语句可以成功执行...
如果你正在运行一个动态的SQL语句是长听起来可怕。什么是使用动态SQL的原因?你能不能把这个陈述分解成更小的陈述? – Tanner
这个限制大约是2GB,所以这不是问题。你如何确定它的截断点?请注意,SSMS结果视图具有可配置的限制,因为它们将显示最大数据。 –
*“我注意到,执行官没有完整地阅读陈述,并删除了最后一部分”* >>告诉我们你是如何得出这个结论的。 –