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

このタスクには、おそらく SQL Integration Services を使用する必要があります。これを使用すると、問題のある行をファイルにリダイレクトして修正できます。その他の機能により、作業がより簡単になります。

これを参照してください: http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

于 2013-04-30T09:04:41.307 に答える
2

唯一の解決策は、征服者を分割することです。列を分離するか、 isdate 関数を使用して選択を作成するまで、欠落している列で挿入をテストします (日付範囲外の問題である可能性がある場合は、問題のある列または行を見つけるための他のものも)

于 2013-04-30T09:42:11.403 に答える
0

私は数ヶ月前に同様の問題を抱えていました。これを回避する方法は、DataSet にテスト用のレコードが 1 つしかないことを確認してから、すべての DateTime 文字列を単純な日付 (2000 年 1 月 1 日など) に設定することでした。それでもエラーが発生する場合は、データベースの DateTime フィールドの形式と、文字列内の単一の日付ではなく、一般的なレベルの文字列の形式に関係しています。

私の場合、それは古き良き英国と米国の日付形式が原因でした! 私のデータベースは英国を使用していましたが、文字列の日付の一部は米国の書式を使用していました。

于 2013-04-30T09:06:40.783 に答える
0

に追加する前に、データを自分で変換してみてくださいDataSet。それは危険なデータを強調するはずです。

于 2013-04-30T09:07:57.267 に答える