2009-07-16 15 views
25

コンピュータラボでソフトウェアライセンスの使用状況を追跡するために使用するサードパーティのソフトウェアに関する問題が発生しました。私たちは最近、互換性があり、アプリケーションが64ビット環境で動作していることを示すいくつかの予備テストを実行していることを保証した後、64ビットServer 2008に移行しました。残念ながら、テストを行っている人は、私がいくつかのレポートを作成するためにデータのライブ処理と後処理を行うためにデータにアクセスすることに依存している2つのアプリケーションの機能をテストしていません。インストーラが標準DSNを作成しない場合、64ビットServer 2008で32ビットODBCドライバを使用するにはどうすればよいですか?

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

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

私はそれを行う方法を考え出したので、私は自分の解決策を回答として提供します(FAQあなた自身の質問に答えてください)。同様に

What software exists for bridging a 64-bit ODBC app to a 32-bit ODBC driver on windows?

+0

あなたはそれを理解しましたか?いいね私が追加できる唯一のことは、(afaik)64ビットプログラム(またはその逆)から32ビットODBCドライバにアクセスすることができないということです。 –

+1

64ビットコンピュータ上で動作する32ビットアプリケーションです。もし私が何度も何度もやり直さなければならないのであれば、私のプラットフォームのページでServer 2008がリストされていなくても、64ビットでソフトウェアが稼働しているという主張はもっと懐疑的だろう。 – tvanfosson

+1

あなたはこのものをホストしているときに、 IIS 6では(これはIIS 7では問題ではないと思います) - IIS 6では、32ビットと64ビットの両方のプログラムをホストすることができないため、64ビットのASP.NETを使用している場合は、あなたは32ビットのODBCのものが必要な場合は、かなりホースです。うん! –

答えて

41

それはあなたがC:\Windows\SysWOW64\odbcad32.exeを使用して32ビットのODBC接続を作成できることが判明しました。私の解決策は、システムDSNとして32ビットODBC接続を作成することでした。これは.NETがそれをルックアップすることができなかったので、私はそれに接続することができませんでした。 OdbcConnectionクラスを取得して、の適切な場所のDSNを検索する方法を見つけるために、有意義な無駄な検索を行った後、別の問題を解決するためにレジストリを変更するよう提案したWebサイトを見つけました。

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

(手作業で)エントリを作成した後、私はWindowsサービスを起動し、すべてが満足していました。

+7

+1あなたが答えを見つけたにもかかわらず質問に答えるため。 – Aren

+9

+1私はそれに尋ねる前に1年以上私の質問に答える。 –

+0

明らかに、Microsoftは "system32"フォルダの名前を変更していないので、system32は実際に64ビットドライバのすべてを持っています。 SysWow64フォルダには32ビットのドライバがすべて含まれています。また、SysWOW64フォルダの下にある "odbcad32.exe"を起動すると、ODBCデータソースダイアログの32ビットバージョンが開きます。デフォルトでは、.NETプロジェクトはx86の「ターゲットプラットフォーム」を持ちます。私はちょうどそれをx64に変更し、私の接続は64ビットNetezzaSQLドライバを.NET用に動かすために働いた。 – MacGyver

3

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

+3

残念ながら、このアプリはIISで実行されていませんでした。 – tvanfosson

2

これらの回答の多くはかなり古いので、私は役に立つと思います。

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

32ビット用と64ビット用の2つのODBCデータソースマネージャがあります。だから私はC:\ Windows \ SysWOW64 \ odbcad32.exeにある32ビット版を実行しなければならなかった。ODBCデータソースマネージャーでは、[システムDSN]タブに移動し、[追加]ボタンを使用してドライバをリストに追加できました。 (追加することができるドライバのリストを表示するには、[ドライバ]タブをチェックしてください。ドライバがこのリストにない場合は、インストールする必要があります)。

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

ドライバーが追加され、正しいドライバーを指し示すプログラムがあれば、それは使い慣れたように機能しました。うまくいけば、これは古いソフトウェアを使って作業する人に役立ちます。

関連する問題