C# SqlBulkCopy-InvalidOperationException-哪个字段导致此问题

C# SqlBulkCopy-InvalidOperationException-哪个字段导致此问题,c#,.net,sqlbulkcopy,C#,.net,Sqlbulkcopy,我正在使用SqlBulkCopy类将数据集插入SQL Server数据库上的一对表中 有时,输入数据无法轻松转换为目标列所需的数据类型。这将导致InvalidOperationException,描述如下: 无法将数据源中给定的字符串类型值转换为指定目标列的smalldatetime类型 InnerException显示:无法将参数值从字符串转换为日期时间。 我的表中有多个DateTime字段;如何找出导致异常的字段?对于此任务,您可能应该使用SQL Integration Services。有

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

有时,输入数据无法轻松转换为目标列所需的数据类型。这将导致InvalidOperationException,描述如下:

无法将数据源中给定的字符串类型值转换为指定目标列的smalldatetime类型

InnerException显示:
无法将参数值从字符串转换为日期时间。


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

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


请参见:

对于此任务,您可能应该使用SQL集成服务。有了它,您可以将有问题的行重定向到一个文件中进行更正,以及其他使您的工作更容易的功能


看看这个:

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


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

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


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

在将数据添加到
数据集之前,您可以尝试自己转换数据。这将突出显示不可靠的数据。

在将数据添加到
数据集之前,您可以尝试自己转换数据。这应该突出显示出不可靠的数据。

唯一的解决办法是分而治之。在隔离列或使用isdate函数创建select之前,请测试缺少列的插入(以及任何其他问题,如果发现哪些列或行存在问题可能是一个过时的范围问题,则唯一的解决方案是划分征服。在隔离列或使用isdate函数创建select之前,请使用缺少的列测试插入(以及任何其他问题,如果发现哪些列或行存在问题可能是一个过时的范围问题

您应该显示您的代码Hi-Jens,只是为了澄清:我的问题不是找出这会引发异常的原因。我想要的是一种方法,在代码生命周期的任何时候,只要引发这种类型的异常,就可以找到哪个字段是引发异常的原因。您应该显示您的代码Hi Jens,只是为了澄清:我的问题不是找出引发异常的原因。我想要的是一种方法,可以在代码生命周期中的任何时候发现引发此类型异常的字段。谢谢,我将使用此方法。这将允许我我会向我的系统的用户呈现一条可用的消息。谢谢,我会这样做。这将允许我实际向我的系统的用户呈现一条可用的消息。+1,您还可以使用
SqlBulkCopy.BatchSize
SqlBulkCopy.NotifyAfter
SqlBulkCopy.SqlRowsCopied
尝试识别显示的第一行位问题,然后检查行。+1,您还可以使用
SqlBulkCopy.BatchSize
SqlBulkCopy.NotifyAfter
SqlBulkCopy.SqlRowsCopied
尝试识别出现问题的第一行,然后检查行。这是因为您的客户非常接近日本,而且他们与msb的lsb一致约定这是因为你们离日本很近,他们有一个一致的lsb到msb约定