私の会社のすべての新しいコンピューターは、同じソフトウェアインストールプロセスを経ています。特に1つのプログラムは、ODBCを介してMS SQLServerデータベースにアクセスする必要があります。このプログラムは、同じコンピューター上の複数のドメインユーザーによって異なる時間に使用されます。
Windows XPマシンでは、ODBC接続をシステムDSNとして設定するだけです。ユーザーがログインすると、接続は彼のために機能し、私の仕事は完了しました。
最近、私たちはますます多くのWindows 7マシンを手に入れており、この方法はもはや機能していないようです。プログラムは、システムDSNで設定した接続を認識しませんが、ユーザーDSNで設定した接続は認識します。これに関する問題は、ユーザーが初めてコンピューターにログインするたびに電話がかかってきて、自分のDSNをインストールする必要があることです。
これがXPで機能するが、7では機能しない理由は何ですか?私は最初からそれを間違っていましたか?
更新:理由はWindows 7ではないかもしれませんが、新しいコンピューターが64ビットOSを実行しているという事実です。これは、64ビットWindows 7でテストアプリケーション( ソースコードはこちら )を実行したときに、ユーザーDSNへのアクセスは正常に機能したが、 システムDSNは、次のエラーメッセージを表示しました。
IM014:指定されたDSNに、ドライバーとアプリケーション間のアーキテクチャの不一致が含まれています
Microsoftのドキュメント は、64ビットコンピューターで32ビットドライバーにアクセスした場合、またはその逆の場合にこれが発生することを示しています。テストアプリケーションを64ビットに切り替えると、システムDSNにアクセスできたため、これが問題になる可能性があります。
ここでの問題は、システムDSNでこれが発生するのに、ユーザーDSNでは発生しないのはなぜですか?2つに異なるドライバーがインストールされていますか?つまり、使用する必要のあるソフトウェアに影響を与えないため、システムDSNを使用できなくなります。
データソースの管理 のMicrosoftの記事は次のように述べています:
64ビットプラットフォームで32ビットドライバーに接続するデータソースを管理するには、
c:\windows\sysWOW64\odbcad32.exe
を使用します。 64ビットドライバーに接続するデータソースを管理するには、c:\windows\system32\odbcad32.exe
を使用します。 64ビットWindows8オペレーティングシステムの管理ツールには、32ビットと64ビットの両方のアイコンがありますODBCデータソースアドミニストレーターダイアログボックス。64ビットのodbcad32.exeを使用して、32ビットのドライバー(たとえば、Driver to Microsoft Access(* .mdb))に接続するDSNを構成または削除すると、次のエラーメッセージが表示されます。
指定されたDSNに、ドライバーとアプリケーション間のアーキテクチャの不一致が含まれています
このエラーを解決するには、32ビットのodbcad32.exeを使用してDSNを構成または削除します。
アプリケーションは明らかに32ビットです。正しいodbcad32.exeを使用してDSNを定義しましたか?
ユーザー権限:ユーザーがSystem-DNSまたはUser-DNSにアクセスできることを確認してください。ここでの状況は、Lotus-NotesがSYSTEM-Userの下でサービスとして実行されていたというものでした。 ODBCへの接続はありませんでした。サービスのユーザーを変更したところ、問題は解決しました。