0

これは私の最初の SSIS パッケージであり、いくつかのチュートリアルに従いましたが、実行するまではすべて問題ないように見えました。SQL Server 2008 データベースから MySQL データベース (2 列の 1 つのテーブルのみ) にデータを同期しようとしています。パッケージを実行すると、次のエラーが発生します。

[ADO NET Destination [16]] エラー: データの挿入中に例外が発生しました。プロバイダーから返されたメッセージは次のとおりです: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の '"UPC", "Model") VALUES (p1, p2)' 付近で使用する正しい構文を確認してください。

そして次の行で

[SSIS.Pipeline]
エラー: SSIS エラー コード DTS_E_PROCESSINPUTFAILED。
入力「ADO NET Destination Input」(19) の処理中に、コンポーネント「ADO NET Destination」(16) の ProcessInput メソッドがエラー コード 0xC020844B で失敗しました。
識別されたコンポーネントが ProcessInput メソッドからエラーを返しました。エラーはコンポーネントに固有のものですが、エラーは致命的であり、データ フロー タスクの実行が停止します。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

私の質問は次のとおりです。

  1. なぜこのエラーが発生するのですか?
  2. それを解決する方法?
4

1 に答える 1

1

ADO.NET と MySQL の問題に関する MSDN リンクを確認してください: http://blogs.msdn.com/b/mattm/archive/2009/01/07/writing-to-a-mysql-database-from-ssis.aspx

MSDN ドキュメントから:

MySQL .NET コネクタには追加のブロックの問題があるため、MySQL データベースに書き込むときは ODBC ドライバーを使用することをお勧めします。試してみると、次のようなエラーが表示されます。

Error: 2009-01-05 12:03:47.79 
   Code: 0xC020844B 
   Source: Data Flow Task 1 Destination - Query [28] 
   Description: An exception has occurred during data insertion, 
                the message returned from the provider is: 
                You have an error in your SQL syntax; check the manual that corresponds
                to your MySQL server version for the right syntax to use near 
                '"name", "date", "type", "remark") 
                VALUES (p1, p2, p3, p4), (p1,p2,p3,p4), (p1,p2' at line 1 
End Error

「VALUES」の部分には、実際の値ではなく、パラメーター名があることに注意してください。これは、MySQL プロバイダーがその ParameterMarkerFormat に対して返す値に問題があるようです。彼らに対して開かれたバグを見つけましたが、彼らはそれを修正しないことに決めたようです. DevArt dotConnect ドライバーにはこの問題がないと聞いていますが、自分で試すことはできませんでした。

于 2012-10-29T07:30:30.773 に答える