1

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

有时输入数据不能轻易地转换为目标列所需的数据类型。这将导致 InvalidOperationException 具有以下描述:

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

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

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

4

4 回答 4

2

唯一的解决办法是分而治之。测试插入缺失的列,直到您隔离列或使用 isdate 函数创建选择(以及任何其他如果它可能是一个超出日期范围的问题,以找出有问题的列或行

于 2013-04-30T09:42:11.403 回答
2

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

看到这个:http ://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

于 2013-04-30T09:04:41.307 回答
0

您可以尝试自己转换数据,然后再将其添加到DataSet. 这应该突出不可靠的数据。

于 2013-04-30T09:07:57.267 回答
0

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

就我而言,这是由于老式的英国和美国日期格式!我的数据库使用的是英国,但一些字符串日期使用的是美国格式。

于 2013-04-30T09:06:40.783 回答