消息 8152,级别 16,状态 14,行 XXX 字符串或二进制数据将被截断

新手上路,请多包涵

场景:一个大型存储过程每天运行数千次,每年每周运行 6 天。对于这种特定情况,我遇到了错误

消息 8152,级别 16,状态 14,行 114

字符串或二进制数据将被截断

这个存储过程大约有 800 行代码,有很多参数、很多变量和很多表。

 Go
@exampleParam varchar(30)
@exampleParam datetime
DECLARE @declaredvara VARCHAR(50);
DECLARE @declaredvarb VARCHAR(50);  -- where the line error is according to the printout
DECLARE @declaredvarc VARCHAR(50);
DECLARE @declaredvard VARCHAR(50);  -- where line error is adjusted for comments in front of GO
BEGIN TRANS
-- some calculations (700+ lines)
COMMIT TRANS
--error catch
ROLLBACK TRANS

问题:我想知道是否有可能读取准确的 Line 错误,所以我至少可以缩小我必须检查的表的范围。此存储过程涉及大量表。

\*\*\* 它所指向的两个声明变量(GO 调整前后)都是自重,它们是 nvr 使用的。

额外信息:我运行存储过程时填充了参数和参数 = “,日期时间除外。在这两种情况下,我都遇到了同样的错误。但是,我知道存储过程有效,因为它每天使用数千次而没有此错误。

 EXEC SP '','','','','2014-11-6'
EXEC SP 'XX_XX_XX','',1,'','2014-11-6'
--both return the same error of Msg 8152, Level 16, State 14
--XX is a specific serialnum.
--However all other serialnum have no problem

编辑:数据库正在运行 SQL Server 2005 EDIT2:我正在使用 SQL Server 2008 进行编辑。 - 所以调试不是一种选择

原文由 MADnoobie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
1 个回答

用于修复 Msg 8152、Level 16、State 14、Line 114 字符串或二进制数据将被截断。

 SET ansi_warnings OFF
GO

原文由 Anees Rana 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏