ODBC接続を介してMSSQL Server 2005 Expressにアクセスする32ビットアプリケーションを実行する必要があるWindows 7 64ビットシステムがあります。インストール後、すべてが正常に機能していました。インストール後数週間で、アプリケーションがデータベースに接続しなくなったことを報告します。C:\Windows\SysWow64\odbcad32.exe
をチェックして、ODBC設定に問題がないかどうか、およびODBC接続が表示されなくなったため、レジストリをチェックして、完全に削除されたかどうかを確認しました。レジストリキーはHKEY_LOCAL_MACHINE\Software\Wow6432Node\ODBC
です。値をそこに開いたところ、odbcad32にアクセスできませんでしたまたは私自身のアプリケーション。
これをコンピューター管理者として実行しようとしたので、アクセス許可が問題にならないようにしました。また、変更が行われていないことを確認したのですが、それでも機能しません。値をodbcad32アプレットに戻す方法に関するアイデアはありますか?それはおそらくソフトウェアの問題も修正するでしょう。
私は この記事私の雇用主 のサイトで、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文字の文字列で構成されるすべての行を削除します。次に、エクスポートしたレジストリツリーセグメントを削除し、編集したファイルからインポートします。これにより、破損を除いてツリーセグメントを復元します。
私はこれと同じ問題を抱えていましたが、これが私のシステム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エントリのName
、REG_SZ
のType
、および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
エントリを削除して、問題を再現することもできます。
うまくいけば、他の解決策で修正できない場合に、これが誰かを助けるでしょう。レジストリキーをエクスポートしようとしましたが、他のソリューションで説明されている@=""
が表示されませんでした。これらの指示が十分に明確でない場合はお知らせください。スクリーンショットの投稿を試みます。ありがとう!
@TallTedが言ったように、問題はx64/IA64でリリースされたODBC Administratorの二重バージョンに関連しています Windows 7 Windows XP(およびそれ以降)。
私は個人的にこの素晴らしいものを見つけました 公式KB記事 これは問題を克服するのに本当に役立ちました。あなたの特定の問題も対処されます ここに別のKB投稿 。私もこの特定のシナリオを要約しようとしました here 。
ところで、コントロールパネルの管理ツールフォルダーに2つの異なるODBC管理者アイコン:32ビット用と64ビット用の2つが保持されるようになりました。ビット。解決策ではありませんが、少なくとも平均的なユーザーは物事を整理することができます。
同じ回避策がWin7にも適用されなかった理由がわかりません。 (MSは 言及した2番目のKBエントリ の終わり近くでレトロ互換性の問題に関連する何かを言ったが、アイコンを追加すると何が壊れるのか理解できない。)