0

重複の可能性:
MSSQL2008R2環境で単純なssisパッケージを実行中に生成された例外0x80040154

MS SQL2008R2で単純なSSISパッケージを実行しようとしています。フラットソースファイルを読み取り、IDに基づいてデータを並べ替え、結果を新しいフラットソースファイルの宛先に書き込みます。しかし、実行すると、次の例外が発生します。

TITLE: Microsoft Visual Studio

Failed to start project

ADDITIONAL INFORMATION:

Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) (Microsoft.DataTransformationServices.VsIntegration)

ここからどのように進めますか?

多くのフォーラムがMSSQL環境の再インストールを求めていますが、これが例外を取り除く唯一の方法であるかどうかはわかりません。

この例外を取り除くためのより良いまたは代替の方法はありますか?

ありがとう。

4

1 に答える 1

1

これを試して:

このエラー メッセージの最も一般的な理由は、64 ビット マシンで 32 ビット dtExec を実行していることです。この投稿では、それについて適切に説明します - Quick Reference SSIS in 32- and 64-bits

編集:記事のキャッシュされた Google リンク: http://webcache.googleusercontent.com/search?q=cache:FQN0QKQCleEJ:toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64 -bits.html+&cd=1&hl=en&ct=clnk&gl=au#!http://toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64-bits.html

SQL Server Integration Services と 64 ビットについては、かなりの誤解が飛び交っています。私はフォーラムで正しい道を歩むように数人以上の人々を設定しなければなりませんでした。ほとんどの場合、誤解されている SSIS パッケージ内の 1 つの特定の設定についてです。もちろん、この情報は 64 ビット アーキテクチャにのみ適用されます。Windows 32 ビット OS を実行している場合、選択の余地はありません。パッケージは常に 32 ビット モードで実行されます。
64 ビット システムを使用しているのに、なぜ 32 ビット モードで実行する必要があるのでしょうか。主にドライバー。ハードウェア ドライバーではなく、データ プロバイダーのことです。たとえば、Excel と一部のバージョンの Oracle には 64 ビット プロバイダーがありません。そのため、増え続ける 64 ビット ユーザーの基盤のために、選択した 64 ビット モードまたは 32 ビット モードで Integration Services パッケージを実行する方法について説明します。背景 うまく設計できるのに、なぜ動かないのか? 少し背景を説明します。Business Intelligence Design Studio (BIDS) は 32 ビット アプリケーションです。パッケージを設計しているときは、32 ビット機能を使用しているため、選択の余地はありません。DTExec を使用してパッケージを実行する場合、32 ビットまたは 64 ビットの操作を選択できますが、64 ビット インストールのデフォルトでは、64 ビット モードが使用されます (当然のことです)。でも、SSIS で一般的に使用される一部のオブジェクトには、対応する 64 ビットがないため、パッケージが失敗する原因となります。残念ながら、通常、これらのメッセージのどこにも、障害が 32 ビットと 64 ビットにあるとは書かれていません。0x80040154 ... クラスが登録されていません 接続マネージャー XXX への AcquireConnection メソッド呼び出しがエラー コード 0xC0202009 で失敗しました 0xC00F9304 ... SSIS エラー コード DTS_E_OLEDB_EXCEL_NOT_SUPPORTED OLE DB プロバイダー "Microsoft.Jet.OLEDB.4.0" は、 (Web を検索している人がこの記事を見つけてくれることを願って、これらのサンプル エラーをここに含めます!) なぜ 32 ビット モードが必要なのですか? 実行中の SSIS パッケージで 32 ビット モードが必要になる最も一般的な理由は、Excel プロバイダーです。現在、64 ビットでは使用できません。パッケージがクラッシュする原因となります。(Office 14 (2010) は 64 ビットをサポートしていると報告されていますが、32 ビットとの併用はサポートされていません。) これは、他の Office プロバイダー (具体的には Access) にも当てはまります。パーティのドライバーとプロバイダー (Oracle など)。64 ビット環境 (2010 年より前) では機能しません。また、DTS 2000 パッケージの実行タスクを実行することもできますが、これらは 32 ビット モードでのみ実行できます。パッケージの実行方法による SSIS パッケージを実行する方法は多数ありますが、これが 64 ビット モードで実行するか 32 ビット モードで実行するかを決定する主な要因です。以下のリストから実行環境を選択し、必要なビット数を強制する方法を読んでください。Business Intelligence Development Studio (BIDS) 内での Bitness の選択 BIDS 内でパッケージを実行している場合、パッケージ実行タスクまたはプロセス実行タスクを使用して子パッケージを実行しない限り、セットアップは簡単です。現在開いているパッケージは (デフォルトで) 64 ビット モードで実行されます。これを制御する設定は、Run64BitRuntime というプロジェクトのプロパティです。このプロパティにアクセスするには、ソリューション エクスプローラーで Integration Services プロジェクトを右クリックし、 [プロパティ] を選択します。次に、エディターで [Debugging] ノードを選択します。ここでのデフォルトは「true」です。これは、このプロジェクトのすべてのパッケージが 64 ビット モードで実行されることを意味します。これを「false」に変更すると、すべてのパッケージが 32 ビット モードで実行されます。特記事項: パッケージ実行タスク パッケージ実行タスクを介して実行される子パッケージは、子パッケージが属するプロジェクトの Run64BitRuntime 設定に関係なく、ExecuteOutOfProcess の設定に関係なく、親と同じモードで実行されます。つまり、子パッケージを設計したプロジェクトで Run64BitRuntime が false に設定されていても、親パッケージの Run64BitRuntime プロパティが true であれば、BIDS 内で 64 ビット モードで実行されます。特記事項: プロセス実行タスク プロセス実行タスクでは、別のプロセスで子パッケージを実行する代わりに、親パッケージの設定とは無関係に 32 ビット モードを選択できます。後述の SQL エージェント メソッドと同様に、32 ビット DTExec を特定して、SSIS 子パッケージを 32 ビット モードで実行できます (以下を参照)。SQL エージェントでのビット数の選択 パッケージを実行する環境を SQL エージェントに指示するのは、Integration Services 2008 では簡単です。Integration Services 2008 エージェント ジョブ ステップのプロパティでは、SQL Server Integration Services Package タイプのステップを使用します。[実行オプション] タブに移動すると、下部に [32 ビット ランタイムを使用する] オプションが表示されます。Integration Services 2005 SQL 2005 では、Integration Services パッケージ タイプのジョブ ステップを使用して、SSIS パッケージを 32 ビット モードで実行することはできません。解決策は、オペレーティング システム タイプのジョブ ステップを使用し、特に使用するコマンド ラインで DTExec の 32 ビット バージョンを参照し、手動で DTExec に引数を指定することです。ハードル #1 - 32 ビット DTExec を見つける 実行可能ファイルを見つけるのは難しくありません。標準の 64 ビット インストールでは、32 ビット DTExec.EXE は "\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn" フォルダーにある必要があります。それは明白に「DTExec.EXE」と呼ばれており、32 ビット アプリであることを決して識別しません。32 ビット フォルダーにあることを「知っておく」必要があります。(または、それを実行して、タスク マネージャーを監視することもできます。) SQL を標準以外の場所にインストールした場合は、少し調べなければならない場合があります。まったく見つからない場合は、64 ビット マシンに 32 ビット コンポーネントがインストールされていない可能性があります。SQL Server のインストール中に、"Integration Services" のみを選択し、" GUI の 10 ほどの他のタブで選択しました。それを活用してください!GUI を使用してパッケージの実行を設定し、最後のページから引数をコピーします。プリコンパイル済みスクリプト これは Integration Services 2005 のみの問題です。開発チームは SSIS 2008 でこの問題を完全に修正しました。スクリプト タスクには「プリコンパイル」オプションがあり、既定で「true」に設定されています。これが何らかの理由で「false」に設定されている場合、パッケージは 64 ビット環境で実行されない可能性があります。32 ビット ODBC ドライバー Windows で 32 ビット ODBC ドライバーを使用することには、もう 1 つの奇妙な点があります。少なくとも、Server 2003、2008、Vista、および Windows 7 64 ビット OS ではそうです。これらのドライバーを使用するための最初のステップは、DSN をセットアップして、サーバー名とその他の詳細の格納を処理することです。私の経験では、最初に自然に開始するのは、" SYSWOW64 フォルダーにある exe です。その ODBC データ ソース管理者は、32 ビット プロセスで 32 ビット ドライバーを実際に管理します。参考文献/リソース この情報のほとんど (すべてではないにしても) は、MSDN の記事: 統合サービスの 64 ビットに関する考慮事項にも要約されています。上記で他の有用な記事、ポインター、または間違いを見つけた場合は、コメントを投稿してください。その他の非常に役立つ記事: How To: Run a Package, MSDN 64-bit references within an SSIS Script Component by Michael Entin, Microsoft SSIS Dev. Douglas Laudenschlager による SQL Server Integration Services の 64 ビットに関する考慮事項 (Microsoft SSIS Dev. SSIS の app.config はどこにありますか? Darren Green 著、SQL Server MVP。

于 2012-09-07T17:59:43.073 に答える