3

Progress データベースから MS SQL 2005 Server データベースにデータをインポートしようとしています。

SQL Server では、スキーマ名を右クリックしてTasks > Import Data...ウィザードを実行しています。

セットアップを進めるための ODBC 接続がありますが、問題はありません。最初に ODBC Explorer を使用してクエリをテストし、構文の問題がないことを確認します。

私が使用しているステートメントは次のとおりです。

SELECT "MYTABLE"."FIRST-NAME",
       "MYTABLE"."LAST-NAME",
       "MYTABLE"."D-O-B"
FROM PUB."MYTABLE"

これは ODBC Explorer では問題なく動作しますが、SSIS でこれを使用しようとすると、次のエラーが発生します。

Executing (Error)
Messages
Error 0xc02090f5: Data Flow Task: The component "Source - Query" (1) was unable to process the data.
 (SQL Server Import and Export Wizard)



Error 0xc0047038: Data Flow Task: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on component "Source - Query" (1) returned error code 0xC02090F5.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

Error 0xc0047021: Data Flow Task: SSIS Error Code DTS_E_THREADFAILED.  Thread "SourceThread0" has exited with error code 0xC0047038.  There may be error messages posted before this with more information on why the thread has exited.
 (SQL Server Import and Export Wizard)

Error 0xc0047039: Data Flow Task: SSIS Error Code DTS_E_THREADCANCELLED.  Thread "WorkThread0" received a shutdown signal and is terminating. The user requested a shutdown, or an error in another thread is causing the pipeline to shutdown.  There may be error messages posted before this with more information on why the thread was cancelled.
 (SQL Server Import and Export Wizard)

Error 0xc0047021: Data Flow Task: SSIS Error Code DTS_E_THREADFAILED.  Thread "WorkThread0" has exited with error code 0xC0047039.  There may be error messages posted before this with more information on why the thread has exited.
 (SQL Server Import and Export Wizard)

私の最初の考えは、DateProgress と MSSQL の間のデータ型の間の問題だったのでTO_CHAR、ステートメントで試しました (最初に ODBC Explorer でテストしました) が、解決しませんでした。

  1. TO_CHARProgress Select ステートメントでの使用
  2. SSIS でのデータ マッピング中。Datetime、smalldatetime、nvarchar などを使用してみてください。
  3. TO_CHARと_NVL
  4. すべての宛先列のサイズを 200 に増やします (現時点で 50 を超える列は必要ないため、これで十分です)。

その Date フィールドを select ステートメントから削除しても、同じエラーが発生します

見逃したものはありますか?ソース データが正しくなく、SQL Server でサポートされていない可能性はありますか?

データ型の変換に問題がある可能性があり、進行中の列のデータのオーバーフローにも問題がある可能性があるというMSDNの提案に関するいくつかの投稿を見つけました

これは断続的な問題のようです。日付を使用する Progress からの他のデータ インポート ジョブがあり、問題はありません (はい、すべての設定を相互参照して、何かを見落としていないことを確認しました)。

私の唯一のオプションは、進行状況>アクセス(または他のDB)> MS SQLからデータを移動することのようです

4

4 に答える 4

3

疑問がある場合:

Progress --> CSV file --> SSIS --> SQL Server

于 2009-12-11T22:59:57.527 に答える
3

Progress DB は、すべてのデータを可変長として格納します。これは、データが固定長であることを期待するデータベースでしばしば問題を引き起こします。解決策は、「dbtool」ユーティリティを実行することです。

dbtool は Progress "bin" ディレクトリにあります。オプション#2「SQL Width Scan with Fix Option」が必要です。

于 2010-01-04T15:45:33.970 に答える
1

Microsoft OLE DB Provider for ODBC Drivers を介して、SQL Linked Server オブジェクトを使用して Progress Database に接続できたことは幸運でした。OpenQuery オブジェクトを使用して、次のようなリンク サーバーにクエリを実行する必要があります。

select MyField, MyOtherField from OpenQuery ([MyLinkedServer],'select MyField, MyOtherField from PUB.My_ProgressTable where dtLastUpdated > {d ''2009-01-31''}') 

ODBC DSN の場合、[詳細設定] タブの [既定の分離レベル] を [READ UNCOMMITTED] に設定します。

これは、Linux サーバー上の Progress 10.1B データベースに対して SQL 2005 を使用しています。おそらく最も洗練された効率的なソリューションではありませんが、かなり信頼できるものです。

于 2010-10-14T19:05:33.587 に答える
0

ここでも同じ問題 (ODBC 経由の INFORMIX 3.81 32 BIT ドライバー)

理由: SSIS は空の文字列で失敗します: ''。たぶんそれはNULLとは異なります。

解決策: 代わりに:

  select col from xxx

置く:

  select case when col = '' then NULL else col end col from xxx

私のために働きます。

于 2010-11-17T13:41:23.310 に答える