我正在尝试使用SQL Server Management Studio插入大量数据。这是我的工作:
data.sql
F5
)我有很多这样的东西:
(1 row(s) affected)
以及其中一些:
Msg 8152, Level 16, State 13, Line 26
String or binary data would be truncated.
The statement has been terminated.
问题:如何获取错误行号?第26行似乎不是正确的错误行号...
多年来,这一直困扰着SQL Server开发人员。最后,使用带有跟踪标志460的SQL Server 2017 CU12,它们会为您提供更好的错误消息,例如:
消息2628,级别16,状态6,过程ProcedureName,行Linenumber字符串或二进制数据将在表'%。* ls'的列'%。* ls'中被截断。截断值:'%。* ls
现在解决此问题的方法是print
在每次插入之后添加一条语句。然后,当您看到rows affected
打印输出时,就可以看到所打印的内容。
...
insert into table1
select...
print 'table1 insert complete'
insert into table2
select...
print 'table2 insert complete'
这不会告诉您什么列,但是会将其范围缩小到正确的插入。SET NOCOUNT ON
如果您不想打印受影响的行消息,也可以在脚本顶部添加。
另外,如果您确实是在使用BULK INSERT,而不仅仅是使用一般术语,则可以指定ERRORFILE
。这将记录导致BULK INSERT
命令错误的行。重要的是要知道默认情况下,BULK INSERT
如果有10个或更少的错误,它将完成。您可以通过MAXERRORS
在BULK INSERT
命令中指定来覆盖它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句