使用批量插入时,字符串或二进制数据将被截断

时间:2015-11-19 03:22:07

标签: sql-server database sql-server-2008-r2 records

我正在使用 SQL Server 2008 R2 ,并尝试使用以下格式将一些记录从一个表插入到另一个表中:

INSERT INTO table2
SELECT ... From table1

我收到了可怕的错误。

  

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

table1是另一个数据库的视图,我们从中获取记录并在将数据插入数据库中的table2之前对数据进行一些处理。

我认为这条消息意味着我填充的某个字段太小而无法容纳我正在插入的数据,但似乎并非如此。

select会对table 1中的字段进行一些解析,并将这些值插入table2。但是插入的数据小于原始字段(只是原始字段的一部分),我已经检查确认它们都适合它们插入的字段。

我很难找到导致此问题的真正原因,因为table2中的字段都具有足够的大小和类型来保存将添加到其中的数据。

此外,当我限制要添加的记录数量(批量执行以尝试查找违规记录)时,在获得2-3批 10k记录之前,它将无误地运行这个错误。所以我认为在接下来的10k记录中存在一些异常数据。

然而,当我将批量大小减少到 6k记录时,而不是在第二批(记录 6k-12k )时出错,这是问题数据的地方应该是这样的,我能够在错误发生之前再次运行插入而没有错误10次(总共60k记录)。

然后我将批量大小减少到 3k 记录,并且在看到错误之前能够再运行4次( 12k 记录)。

我一直在减少批量的大小,每次我可以使用多个小批量插入更多的记录,而不是单个更大的批次。

这表明它实际上并不是导致问题的数据大小,而是其他方面。

现在已经到了我无法再插入单个记录的程度了。检查要插入的记录确认它符合所有字段的大小,不应该导致此错误。

鉴于最初我无法插入下一个 10k 记录,因为此错误,但已设法插入超过10万条记录(以不断减少的批量大小)我想知道是否有人可以建议在哪里真正的问题在于什么?

问题是:
是否有一些系统表,日志或其他可能阻止这些插入的限制?

任何建议都将不胜感激。

0 个答案:

没有答案