26

コンピューター ラボでソフトウェア ライセンスの使用状況を追跡するために使用しているサード パーティ ソフトウェアで問題が発生しました。互換性があるという会社からの保証を受け、アプリが 64 ビット環境で動作することを示すいくつかの予備テストを実行した後、最近、アプリを 64 ビット Server 2008 に移行しました。残念ながら、テストを行っている人は、データへのアクセスに依存してデータのライブ処理と後処理の両方を実行していくつかのレポートを生成する、私が持っているいくつかのアプリの機能をテストしませんでした.

アプリケーションには、内部データにアクセスするための 64 ビット ODBC ドライバーがなく、64 ビット SQL Server ODBC ドライバーを使用してそのデータを SQL サーバーにエクスポートできないことが判明しました。32ビットのODBCドライバーが含まれてインストールされますが、システムデータソースではなくユーザーデータソースとしてインストールされます。つまり、ライブコレクションを実行するWindowsサービスはそれを見つけることができません. また、データ ソース管理コンソールがインストールされているドライバーを見つけられないため、システム DSN を作成することもできません。

私の質問は、システム アカウントで実行されている C#/.NET Windows サービスからアクセスできるこの接続のデータ ソースをどのように構成すればよいですか?

私はそれを行う方法を見つけたので、答えとして私の解決策を提供します(あなた自身の質問に答える方法に関するFAQに沿って)。

類似: Windows で 64 ビット ODBC アプリを 32 ビット ODBC ドライバーにブリッジするためのソフトウェアは何ですか?

4

3 に答える 3

41

を使用して 32 ビット ODBC 接続を作成できることがわかりましたC:\Windows\SysWOW64\odbcad32.exe。私の解決策は、32 ビット ODBC 接続をシステム DSN として作成することでした。.NET が検索できなかったため、これでも接続できませんでした。OdbcConnection クラスが適切な場所で DSN を検索するようにする方法を見つけるための重要で実りのない検索の後、別の問題を解決するためにレジストリを変更することを提案する Web サイトに出くわしました。

の直下にODBC接続を作成することになりましたHKLM\Software\ODBC。SysWOW6432 キーを調べて、ODBC 管理ツールの 32 ビット バージョンを使用して設定されたパラメーターを見つけ、これを標準の場所に再作成しました。ただし、アプリの標準インストーラーでもインストールされていないため、ドライバーのエントリは追加しませんでした。

エントリを (手動で) 作成した後、Windows サービスを開始しましたが、すべて問題ありませんでした。

于 2009-07-16T00:31:21.123 に答える
2

IISマネージャーを開き、[アプリケーションプール]を選択し、使用しているアプリケーションプールを選択して、右側のメニューの[詳細設定]をクリックします。[全般]で、[32ビットアプリケーションを有効にする]を[True]に設定します。

于 2013-01-30T10:37:42.747 に答える
2

これらの回答の多くはかなり古いため、役立つと思われる解決策で更新すると思いました。

私たちの問題は OP と似ていて、32 ビット XP マシンを 64 ビット Windows 7 にアップグレードしたところ、32 ビット ODBC ドライバーを使用するアプリケーション ソフトウェアがデータベースに書き込めなくなりました。

結局のところ、32 ビット用と 64 ビット用の 2 つの ODBC データ ソース マネージャーがあります。そのため、C:\Windows\SysWOW64\odbcad32.exe にある 32 ビット バージョンを実行する必要がありました。ODBC データ ソース マネージャー内で、[システム DSN] タブに移動し、[追加] ボタンを使用してドライバーをリストに追加することができました。([ドライバー] タブをチェックして、追加できるドライバーのリストを確認できます。ドライバーがこのリストにない場合は、インストールする必要がある場合があります)。

次の問題は、実行したソフトウェアが「任意の CPU」を使用するようにコンパイルされていたことです。これにより、オペレーティング システムが 64 ビットであることがわかり、64 ビットの ODBC データ ソースが調べられます。そのため、プログラムを強制的に x86 プログラムとしてコンパイルする必要がありました。これにより、32 ビット ODBC データ ソースを調べるように指示されます。プログラムを x86 に設定するには、Visual Studio でプロジェクトのプロパティに移動し、上部のビルド タブの下にプラットフォームのドロップダウン リストがあり、x86 を選択します。ソース コードがなく、プログラムを x86 としてコンパイルできない場合は、プログラム .exe を右クリックして互換性タブに移動し、適切な互換性を選択できる場合があります。

ドライバーを追加し、プログラムが適切なドライバーを指すようにすると、すべてが以前と同じように機能しました。願わくば、これが古いソフトウェアを使用しているすべての人に役立つことを願っています。

于 2015-11-17T19:31:55.967 に答える