SSISの複数ステップOLE DB操作エラーを修正するにはどうすればよいですか。 -- sql-server フィールド と ssis フィールド 関連 問題

How do I fix the multiple-step OLE DB operation errors in SSIS?












24
vote

問題

日本語

同じサーバー上の2つのデータベース間でデータを転送するためにDTSパッケージを作成しようとしています。 IV異なるデータベースタイプ間で転送しているときに生成された複数ステップのOLE DB操作エラーが発生する可能性があると読んでくださいが、これはここではそうではありません。列メタデータを調べるにはどうすればよいですか?

エラー:データフロータスクで0xC0202009 Pitech [183]​​:OLE DBエラーがあります 発生した。エラーコード:0x80040E21。 NS OLE DBレコードがあります。ソース: "Microsoft SQLネイティブクライアント" hresult:0x80040E21説明: "多段のOLE DBの操作 生成されたエラー各OLE DBを確認してください 利用可能な場合はステータス値。仕事なし 行われました。」

エラー:データフロータスクで0xC0202025 Pitech [183]​​:OLE DBを作成できません アクセサー。列があることを確認してください メタデータは有効です。

エラー:0xC004701Aデータフロータスクで、 dts.pipeline:コンポーネント "Pitech"(183) 事前実行フェーズに失敗しました エラーコード0xC0202025。

英語

I'm attempting to make a DTS package to transfer data between two databases on the same server and I'm getting the following errors. Iv read that the Multiple-step OLE DB operation generated error can occur when you are transferring between different database types and there is loss of precision, but this is not that case here. How do I examine the column meta data?

Error: 0xC0202009 at Data Flow Task, piTech [183]: An OLE DB error has occurred. Error code: 0x80040E21. An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E21 Description: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".

Error: 0xC0202025 at Data Flow Task, piTech [183]: Cannot create an OLE DB accessor. Verify that the column metadata is valid.

Error: 0xC004701A at Data Flow Task, DTS.Pipeline: component "piTech" (183) failed the pre-execute phase and returned error code 0xC0202025.

</div
     

回答リスト

35
 
vote

フィールドの所有物(タイプ、長さ、デフォルト値など)を見て、それらは同じであるべきです。

フィールドの長さが等しくないため、SQL Server 2008 R2にこの問題がありました。

 

Take a look at the fields's proprieties (type, length, default value, etc.), they should be the same.

I had this problem with SQL Server 2008 R2 because the fields's length are not equal.

</div
 
 
     
     
11
 
vote

このエラーは、ソーステーブルにテキスト列が含まれており、ターゲットがテキスト列以外のものである場合に一般的です。これまでに遭遇していない(または忘れている)場合は、リアルタイムアイザーになることができます。

テキスト列を文字列に変換し、無視するために切り捨て時にエラー状態を設定します。これは通常このエラーの解決策として機能します。

 

This error is common when the source table contains a TEXT column and the target is anything other than a TEXT column. It can be a real time-eater if you have not encountered (or forgot!) this before.

Convert the text column to string and set the error condition on truncation to ignore. this will usually serve as a solution for this error.

</div
 
 
3
 
vote

このクエリは、潜在的な問題である列を識別する必要があります...

<事前> <コード> SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH
 

This query should identify columns that are potential problems...

SELECT *  FROM [source].INFORMATION_SCHEMA.COLUMNS src     INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst          ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH  
</div
 
 
2
 
vote

<コード> '-2147217887' message 'IDispatch error #3105' source 'Microsoft OLE DB Service Components' description 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.'."

これは私も直面していたものです。問題は、SQLOLEDB.1プロバイダーをSQLNCLI11 に変更したことから、接続文字列の互換モードに記載されていません。 この DataTypeCompatibility=80; を接続文字列に設定すると、問題が解決しました。

 

'-2147217887' message 'IDispatch error #3105' source 'Microsoft OLE DB Service Components' description 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.'."

This is what I was also facing. The problem came from the fact that I changed my SQLOLEDB.1 provider to SQLNCLI11 without mentioning the compatibility mode in the connection string. When I set this DataTypeCompatibility=80; in the connection string, I got the problem solved.

</div
 
 
       
       
2
 
vote

この問題は、ファイルの末尾に空の行が起動し、それらを削除してジョブを実行します。

 

This issue will come mostly due to empty rows at the end of the file, remove those and run the job.

</div
 
 
0
 
vote

SELECT * FROM INFORMATION_SCHEMA.COLUMNS を使用できますが、ソース・データベースのスクリプトから宛先データベースを作成したと思われるので、列が同じになる可能性が非常に高いです。

いくつかの比較は何かを起こすかもしれません。

これらの種類のエラーは、VARCHAR列にあまりにも多くのデータを挿入しようとしていることがあります。

 

You can use SELECT * FROM INFORMATION_SCHEMA.COLUMNS but I suspect you created the destination database from a script of the source database so it is very likely that they columns will be the same.

Some comparisons might bring something up though.

These sorts of errors sometimes come from trying to insert too much data into varchar columns too.

</div
 
 
0
 
vote

私は古いデータベースから新しいデータベースにデータを転送していたときにも同様の問題がありました、私は上記のエラーを得ました。その後、次のスクリプトを実行しました

<コード> SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH

と、文字サイズなどに関してわずかに異なる私の列が見つかった その後、機能しなかった新しいテーブル構造にテーブルを変更しようとしました。その後、古いデータベースからExcelにデータを転送し、Excelからのデータを100%に働く新しいDBにインポートしました。

 

I had a similar issue when i was transferring data from an old database to a new database, I got the error above. I then ran the following script

SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH

and found that my columns where slightly different in terms of character sizes etc. I then tried to alter the table to the new table structure which did not work. I then transferred the data from the old database into Excel and imported the data from excel to the new DB which worked 100%.

</div
 
 
0
 
vote

スクリプトにバッチのセパレータコマンドがないかどうかを確認します(単一の行に 'GO'ステートメントを削除する)。

 

Also check if the script has no batch seperator commands (remove the 'GO' statements on a single line).

</div
 
 
0
 
vote

私は答えは私が2つのパラメータを渡してSQLタスクを実行していたが、それを使用しているということでした。私はいくつかのテストをしていて、2番目のパラメータを使ってコードのセクションをコメントアウトしていました。パラメータマッピングを削除するのを無視しました。

では、Execute SQLタスクを使用している場合は、パラメータマッピングで正しい数のパラメータを渡していることを確認してください。

 

For me the answer was that I was passing two parameters to and execute SQL task, but only using one. I was doing some testing and commented out a section of code using the second parameter. I neglected to remove the parameter mapping.

So ensure you are passing in the correct number of parameters in the parameter mapping if you are using the Execute SQL task.

</div
 
 
0
 
vote

私の場合では、問題はExecute SQLタスクの変数を設定していました。パラメータ名のマッピングで、パラメータ名のマッピングで、(OLEDB内)、ストアドプロシージャで呼び出すパラメータの位置である必要があります。最初のパラメータは0で始まりますので、私はそれを変更してVoilá!

 

In my case, the problem was setting the variable of the Execute SQL Task, in parameters mapping the parameter name, (in OLEDB must be the position of the parameter that you call in the stored procedure), I had 1, but the first parameter starts in 0, so I changed it and voilá!

</div
 
 
-1
 
vote

このエラーは、挿入を行おうとしていて、フィールドが符号化されていないときにも発生し、NULLが挿入されようとしています。

 

This error will also occur when trying to do an insert and a field is coded not null and nulls are trying to be inserted.

</div
 
 
-1
 
vote

CSVをMSSQLに転送するときにこのエラーをハード 列をDT_NTEXTおよびMSSQLの列に変換します。ここで、nvarchar(255)に設定します。

nvarchar(max)に設定した。

 

I hade this error when transfering a csv to mssql I converted the columns to DT_NTEXT and some columns on mssql where set to nvarchar(255).

setting them to nvarchar(max) resolved it.

</div
 
 

関連する質問

2  データベースにフラットファイルをロードするためにSSISまたはマルチスレッドC#アプリケーションを使用してください。  ( Should i go with ssis or multithreaded c sharp application to load flat files in ) 
SQL Server Integration Services(SSIS)の内側には、何百万レコードを保持できるフラットファイルへの接続を設定して、そのデータがSQL DBにプッシュされている可能性があります。さらに、このプロセスは、Microsoft.sq...

9  Foreach Loop Microsoft SSIS - Breakステートメントと同等のものです  ( Foreach loop microsoft ssis equivalent to break statement ) 
SSISのFOREACHループ内では、タスクが失敗した場合は次の反復にループから抜けることができますか。 XMLファイルをループして、このファイル内の値を使用してルックアップを実行している場合、ルックアップがこれを報告したい場合は他のタスクを実行しない場...

2  SSISでの障害パッケージとエラーメッセージの取得  ( Retrieving failing package and error message in ssis ) 
何かがうまくいかないときは、私の他のパッケージから呼び出すべき一般的なエラー処理パッケージを作りたいです。このエラー処理パッケージでは、どのタスクに失敗したか、失敗の理由がログに記録します。この情報を取得するにはどうすればいいですか? コントロールフローの障害...

31  SSISからHTTPリクエストを作成する方法  ( How to make an http request from ssis ) 
私がSSISからどのようにHTTP呼び出しをすることができるかを知ることに興味があります。たとえば、 http://www.domain.com/resource.zip からファイルをダウンロードして、ダウンロードのDateTimeとドライブ上のファイルの宛...

4  Amazon RDS(リレーショナルデータストア)とSSIS  ( Amazon rds relational data store and ssis ) 
Amazon RDSでSSISを使用することができるかどうかを知っていますか? RDSは本質的にMySQLです - これはOLE DBまたは何かを使用して可能でしょう...? ...

6  SSISスクリプトタスク変数値の取得エラー  ( Ssis script task error retrieving variable values ) 
Script Task では、ネットワーク接続された場所と FTP のオフサイトの場所からファイルを取得しようとしています。 SSISでは、 FTP Connection を作成し、それがセットアップされていることをテストしました 3つの変数を作成...

0  NVARCHARデータが転送されない - SSIS 2008R2  ( Nvarchar data not transfering ssis 2008r2 ) 
データフロータスクが完了しているトラブルとテーブルがロードされていますが、すべての文字フィールドは空です。悲しいことはすべて開発とテスト中に完全に稼働しています。しかし、devとprodの間に環境の違いがあります、devは完全に32ビットで、prodはちょうど...

3  SSIS列の制限のExcelソース  ( Excel source in ssis column limitations ) 
Excelからのデータを、SSISを使用してSQLデータベースに256以上のフィールドにインポートできます。 SSIS のExcelソースの列選択で255以上の列を表示できなかったので、これにはトリックがあります。 ...

10  DTSパッケージをSSIS 2012に移行する方法  ( How to migrate dts packages to ssis 2012 ) 
SQL Server 2000で作成されたすべてのDTSパッケージをSSIS 2012に移行する必要があります.SQL Server 2000とSQL Server 2012の違いは何ですか。挿入、更新、削除などのSQLステートメントに違いがありますか。私が...

0  SSISパッケージ内のテーブルから昨年度作成したレコードのみを取得するにはどうすればよいですか。  ( How do i fetch only records created in the past year from a table within ssis pa ) 
私は表に ct_dt を持っています。私は過去の 365 days 内で作成されたトランザクションのみを処理する必要があります。 現在の日付が 2012年11月7日であるとします。 2011年11月7日以降に作成されたトランザクションのみを処理する必要がありま...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有