データエクスプローラからdbExpress接続ができない

摘要: データエクスプローラのトラブルシューティングに関する説明です

02000003

対象となるケース:

過去にDelphi/C++Builder/RadStudio 2009のインストール => アンインストールし、
Delphi/C++Builder/RadStudio 2007のインストールを行った場合

02000003

対象となるOSプラットホーム:

Win32

02000003

データエクスプローラは .NET経由でdbExpressライブラリを呼び出しています。

正確には、Borland.Data.AdoDbxClientアセンブリ内のライブラリからdbExpressのドライバを呼び出しているのですが、VCLフォームにdbExpressコンポーネントを置き、プログラムを実行(ネイティブ接続)した場合には問題なく実行できるケースでも、データエクスプローラからdbExpress接続を行った場合、エラーが表示され、正常に実行できないことがあります。

これは、上述しましたようにデータエクスプローラが.NET環境に依存していることが原因の一つとなります。

02000003

この記事では、Delphi/C++Builder/RadStudio 2007製品のご利用で、データエクスプローラでdbExpress接続を行った場合、発生する2つのエラーケースを紹介します。

02000003

    (ケース1 ) Invalid argument もしくは unknown driverのエラーが発生する

02000003

Hide image
unknownDriver

Hide image
Invalid_error

02000003

上記のようなエラーが発生した場合は、データエクスプローラが参照するBorland.Data.AdoDbxClientアセンブリが2007用では無い可能性が考えられます。

Windowsエクスプローラで、GACのフォルダを開いてBorland.Data.AdoDbxClientアセンブリ情報をご確認ください。(GACのフォルダは、デフォルトでC:\Windows\assemblyとなります。)

02000003

Borland.Data.AdoDbxClientアセンブリバージョンは、Delphi/C++Builder/RadStudio2007,Delphi/C++Builder/RadStudio 2009 共に同じ“11.0.5000.0”なのですが、ファイルバージョンが異なります。

以下の図をご覧ください。

02000003

2007用のアセンブリ

Hide image
2007_1

0200000302000003

2009用のアセンブリ

Hide image
2009_1

02000003

Delphi/C++Builder/RadStudio 2009製品をアンインストールしても、GAC内のアセンブリキャッシュは削除されません。

02000003

また2009用のBorland.Data.AdoDbxClientアセンブリのほうがファイルバージョンとしては

新しいため、Delphi/C++Builder/RadStudio 2007をインストールしてもこのBorland.Data.AdoDbxClientアセンブリがGAC内にキャッシュされていると、適切に置き換わらないことがあります。

その結果、2009用の同名アセンブリを利用することになり、ケース1で紹介したエラーが発生します。

02000003

この問題を解決するためには、GAC内のBorland.Data.AdoDbxClientアセンブリを一旦アンインストールした後、

<CommonFilesFolder>\CodeGear Shared\RAD Studio\Shared Assemblies\5.0以下に

保持されているBorland.Data.AdoDbxClient.dllを

グローバルアセンブリキャッシュツール(GacUtil.exe)を利用してGACへインストールし直してください。

02000003

詳しくは、「製品アンインストール後のGACの削除について」

http://support.codegear.com/article/39299/

をご覧ください。

02000003

    (ケース2 ) AdoDbxプロバイダがロードできない

02000003

Hide image
loadError

02000003

上記のようなエラーが発生した場合は、.NETの環境情報ファイルmachine.configの定義内容が不正である可能性が考えられます。

データエクスプローラは、machine.configファイルの設定情報を参照しているのですが、Delphi/C++Builder/RadStudio製品を再インストールすることで、

下記のように“AdoDbx Data Provider”のエントリが重複して登録されることがあります。

02000003

Hide image
Click to see full-sized image

02000003

登録されているアセンブリ情報自体は、全く同一の内容なので、この設定のままデータエクスプローラがmachine.configを参照すると、ケース2で紹介したエラーが発生します。

02000003

machine.configファイルの格納場所(デフォルト)は、

02000003

Windows 32ビットOS:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

Windows 64ビット OS:

C:\WINDOWS\Microsoft.NET\Framework(x86)\v2.0.50727\CONFIG

もしケース2に該当した場合の問題解決の方法は、上図 machine.configで示すAdoエントリのどちらか片方を手動で削除する必要があります。

(上記の作業を行う前に、必ずmachine.configファイルをバックアップしてください)

02000003