web-dev-qa-db-ja.com

ODBC:システムDSNの削除の問題

同じ名前のDSNが2つある同僚がいます。1つはユーザーDSNで、もう1つはシステムDSNです。彼はユーザーDSNを削除しましたが、ODBCad32でシステムDSNを削除できません

誰かが以前にこれに遭遇しましたか?

4
Nick

これは、DSNを裏付けるレジストリキーのある時点で末尾のピリオド(。)が挿入され、編集または削除されない場合に見られました。 Oracle DSNですか?そうでない場合は、どのドライバーを使用していますか?

最初に、別のDSNを追加または削除できるかどうか、またはパネル全体が役に立たなくなったかどうかをテストします。

使用しているパネルを確認してください。 C:\Windows\SysWOW64\odbcad32.exe(驚くべきことに32ビット)とC:\Windows\system32\odbcad32.exe(驚くべきことに64ビット)にパネルのコピーが2つある場合があります。両方試してください。

次に、HKLM/Software/ODBCの下のエントリを探してみてください。そこでエントリを編集または削除できる場合があります。

ユーザーDSNは両方のパネルに表示されますが、ビットネスが一致する管理者のみが1つを削除または編集できます。

3
Chris Thorpe

権限の問題のようです。システムDSNは、誰がログオンするかに関係なくコンピューターごとであるため、マシンを削除または変更するには、マシンへの管理アクセスが必要になります。

すでに管理アクセス権を持っている場合は、キーのセキュリティを確認し、必要に応じて所有権を取得する必要があります。

3
Maximus Minimus

他のODBCドライバーに適用される可能性のあるJetドライバーの問題を発見しました:システムDSNを作成または変更し、同じ名前のユーザーDSNがある場合、システムDSNレジストリ設定が不完全です-代わりに、ユーザーDSN構成に入ると収集します。

(少なくともJet)ドライバーはシステムDSNレジストリエントリ(HKLMの下)とユーザーDSNエントリ(HKCUの下)の両方を検索するため、システムDSNは機能しているように見えます。ユーザーDSNを削除すると、不完全なシステムDSNが残り、ODBCドライバーはそれを処理するのに十分な堅牢性を備えていない可能性があります。

FWIW、Dan Konigsbach

1
Dan Konigsbach