2

SQL Server 2008 R2 からのインポート ウィザードを使用して、Oracle データベースから SQL サーバーにデータを抽出する dtsx パッケージを作成しました。ウィザードの手順では、移行中に新しいテーブルを作成するために SQL スクリプト コマンドを編集しました。

ウィザードの手順で、パッケージの保護レベル領域で [機密データを保存しない] を選択しました。
生成されるコマンド ラインは次のとおりです。

dtexec.exe /FILE import_data.dtsx 
CONNECTION DestinationConnectionOLEDB; Data Source=source;Initial Catalog=TEST;
           Provider=SQLNCLI10; Integrated Security=SSPI;Auto Translate=false; 
CONNECTION SourceConnectionAdoNET;Data Source=Oracle;PASSWORD=XYZ;User ID=Ned;  
CHECKPOINTING OFF  
REPORTING EWCDI 

ただし、常に次の例外が発生します。

Error: 2013-03-08 09:54:55.65
Code: 0xC0047062
Source: Data Flow Task 1 Source - test_Table [1]

Description: Microsoft.SqlServer.Dts.Runtime.DtsCouldNotCreateManagedConnecti
onException: Could not create a managed connection manager.

at Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(String
assemblyQualifiedName, String connStr, Object transaction)
at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireCo
nnection(Object pTransaction)
at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(Object    
transaction)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnectio
ns(IDTSManagedComponentWrapper100 wrapper, Object transaction)
End Error

「すぐに実行」チェックボックスを選択して、インポートウィザードからパッケージを実行すると、正常に動作します。これにより、データベースへの適切な接続を妨げる接続文字列に何かが欠けている可能性があると思います。

SQL Server (ターゲット DB) の場合、Windows 認証を使用してデータベースにログインし、Oracle (ソース DB) のユーザー名/パスワードを使用します。

dtexec.exe の 32 ビット バージョンも使用しようとしましたが、成功しませんでした。

4

1 に答える 1

1

接続を作成できなかった理由が示されていないのは奇妙です。ログインの問題である場合は、それが表示されるため、ドライバーを疑っています。

32 ビット dtexec を明示的に実行しましたか? これは非常にトリッキーで、私が尋ねる理由は、32 ビット ランタイムがインストールされている 64 ビット環境でパッケージを手動で (ダブルクリックして) 実行すると、デフォルトで 32 ビット版が呼び出されるためです ( 64 ビット)。これは、PATH 環境変数のパスによるものです。32 ビット プログラム ファイル (%ProgramFiles(x86)%) へのディレクトリは、64 ビット プログラム ファイル (%ProgramFiles%) へのディレクトリ パスの前にリストされます。

すべてのツール (BIDS および SSDT ) は 32 ビット専用のアプリケーションであることに注意してください。これらは 64 ビット環境で使用できますが、使用するすべてのデータ プロバイダーは 32 ビットです。SSIS パッケージを 64 ビット環境で使用できるようにするには、適切なエディションのデータ プロバイダーが必要です。そうでない場合; 32 ビット ランタイムを使用して実行する必要があります。

于 2013-03-08T14:20:22.160 に答える