web-dev-qa-db-ja.com

32ビットODBC接続がodbcad32.exeに表示されないのはなぜですか?

ODBC接続を介してMSSQL Server 2005 Expressにアクセスする32ビットアプリケーションを実行する必要があるWindows 7 64ビットシステムがあります。インストール後、すべてが正常に機能していました。インストール後数週間で、アプリケーションがデータベースに接続しなくなったことを報告します。C:\Windows\SysWow64\odbcad32.exeをチェックして、ODBC設定に問題がないかどうか、およびODBC接続が表示されなくなったため、レジストリをチェックして、完全に削除されたかどうかを確認しました。レジストリキーはHKEY_LOCAL_MACHINE\Software\Wow6432Node\ODBCです。値をそこに開いたところ、odbcad32にアクセスできませんでしたまたは私自身のアプリケーション。

これをコンピューター管理者として実行しようとしたので、アクセス許可が問題にならないようにしました。また、変更が行われていないことを確認したのですが、それでも機能しません。値をodbcad32アプレットに戻す方法に関するアイデアはありますか?それはおそらくソフトウェアの問題も修正するでしょう。

4
JRSofty

私は この記事私の雇用主 のサイトで、32ビットの使用についてODBC 64ビットWindowsで、あなたを助けるかもしれないと思う...

以下のコメントや元の問題の説明では、32ビットODBC Administratorを使用していることを明確に示していません。32ビットと64ビットの両方に注意してください。ビットプログラムの名前は同じodbcad32.exe。違いは、直感に反するディレクトリの場所-System32(64ビットコンポーネント用)およびSysWow64(32ビットコンポーネントの場合)。

あなたはmay Windowsレジストリに小さな破損があり、古いが再発する問題に直面しています。破損は、この4文字の文字列を含むエントリの形をとります-

@=""  

これらのエントリは、レジストリエクスポートファイル以外の場所には表示されませんが、いくつかの望ましくない動作を引き起こす可能性があります。

注:64ビットWindowsマシンでは、当然32ビットに関連するいくつかの複雑な問題がありますレジストリ。 このMicrosoft KB記事 これらを使用するには十分かもしれません。

64ビットのレジストリエディタを使用して、次のブランチ(これらのエントリが見つかる傾向がある)をエクスポートすることをお勧めします-

HKEY_LOCAL_MACHINE\Software\ODBC
HKEY_LOCAL_MACHINE\Software\WOW6432Node\ODBC
HKEY_CURRENT_USER\Software\ODBC
HKEY_CURRENT_USER\Software\WOW6432Node\ODBC

これらのファイルを任意のテキストエディタ(Notepad.exeまたはWordpad.exeは通常は問題ありません)、上記の4文字の文字列で構成されるすべての行を削除します。次に、エクスポートしたレジストリツリーセグメントを削除し、編集したファイルからインポートします。これにより、破損を除いてツリーセグメントを復元します。

7
TallTed

私はこれと同じ問題を抱えていましたが、これが私のシステムDSNの修正方法です。

参考までに、ODBCがWindows OSで64ビットまたは32ビットのどちらであるかを示すレジストリ内の2つのパスを示します。

64ビット:

\ HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI

32ビット:

\ HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI

ODBC.INIフォルダーには、DSNの名前とそれに関連するすべてのキーを含むサブフォルダーがあり、ODBC Data Sourcesと呼ばれる、(Default): (value not set)キーのみを持つ別のサブフォルダーがありました。

ODBC Data Sourcesフォルダには、DSNエントリのNameREG_SZType、およびDataの値を持つキーも必要です。 ODBC Provider/Driver名(私の場合はiSeries Access ODBC Driverでした)。 MS SQLサーバーに別のテストを設定したところ、Data値はSQL Serverでした。

これを発見した方法は、すべてのDSNフォルダーとODBC Data Sourcesフォルダーを完全に削除し、最初からDSNを再作成したことです。フォルダーと関連するキーの両方が作成され、DSNが表示されて使用できるようになりました。

ODBC Data Sourcesにプロバイダー名が含まれるキーがないと、DSNはodbcad32.exeに表示されません。 ODBC Data Sourcesエントリを削除して、問題を再現することもできます。

うまくいけば、他の解決策で修正できない場合に、これが誰かを助けるでしょう。レジストリキーをエクスポートしようとしましたが、他のソリューションで説明されている@=""が表示されませんでした。これらの指示が十分に明確でない場合はお知らせください。スクリーンショットの投稿を試みます。ありがとう!

2
Geoff Gunter

@TallTedが言ったように、問題はx64/IA64でリリースされたODBC Administratorの二重バージョンに関連しています Windows 7 Windows XP(およびそれ以降)。

私は個人的にこの素晴らしいものを見つけました 公式KB記事 これは問題を克服するのに本当に役立ちました。あなたの特定の問題も対処されます ここに別のKB投稿 。私もこの特定のシナリオを要約しようとしました here

ところで、コントロールパネルの管理ツールフォルダーに2つの異なるODBC管理者アイコン:32ビット用と64ビット用の2つが保持されるようになりました。ビット。解決策ではありませんが、少なくとも平均的なユーザーは物事を整理することができます。

同じ回避策がWin7にも適用されなかった理由がわかりません。 (MSは 言及した2番目のKBエントリ の終わり近くでレトロ互換性の問題に関連する何かを言ったが、アイコンを追加すると何が壊れるのか理解できない。)

0
Darkseal