SqlBulkCopy - InvalidOperationException - 导致此问题的字段

时间:2013-04-30 09:00:41

标签: c# .net sqlbulkcopy

我正在使用SqlBulkCopy类将DataSet插入到SQL Server数据库的一对表中。

有时输入数据无法轻易转换为目标列所需的数据类型。这会导致InvalidOperationException,并带有以下描述:

数据源中String类型的给定值无法转换为指定目标列的smalldatetime类型。

InnerException说:Failed to convert parameter value from a String to a DateTime.

我的表中有多个DateTime字段;如何找出导致异常的字段?

4 个答案:

答案 0 :(得分:1)

对于此任务,您可能应该使用SQL Integration Services。有了它,您可以将有问题的行重定向到文件进行更正,以及其他可以使您的工作更轻松的功能。

请参阅:http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

答案 1 :(得分:1)

唯一的解决方案是分裂征服。使用缺少的列进行测试插入,直到您已使用isdate函数隔离列或创建选择(如果可能是过时范围问题,则查找哪些列或行有问题

答案 2 :(得分:0)

几个月前我有类似的问题。我解决它的方法是确保我的DataSet只有一条记录用于测试,然后将所有DateTime字符串设置为一个简单的日期(例如01/01/2000)。如果您仍然收到错误,那么它将降低到数据库中DateTime字段的格式,而不是字符串中一般级别的格式,而不是字符串中的单个日期。

在我的情况下,这是由于良好的老式英国和美国日期格式!我的数据库使用英国,但有些字符串日期使用美国格式。

答案 3 :(得分:0)

您可以尝试自行转换数据,然后再将其添加到DataSet。这应该突出狡猾的数据。