まとめ
この記事では、Open Database Connectivity (ODBC) ドライバーが、Windows コンピューターに正しくインストール、登録、および構成されていることを確認する方法について説明します。 アプリケーションがデータベースに接続できない場合、ODBC ドライバーが ODBC データ ソース アドミニストレーターに表示されない場合、またはエラー Data source name not found and no default driver specified (SQLSTATE IM002) を受け取った場合に使用します。 検証手順では、ODBC データ ソース 管理者の 32 ビットおよび 64 ビット のコピー、Windows レジストリのデータ ソース名 (DSN) とドライバー エントリ、およびアプリケーションが ODBC ドライバー マネージャーに渡す接続文字列について説明します。
どの ODBC データ ソース管理者のコピーを開く必要がありますか?
64 ビット バージョンのWindowsでは、ODBC データ ソース アドミニストレーターのコピーが 2 つあり、各コピーで、そのビット性に一致するドライバーとシステム DSN が管理されます。
64 ビット アプリケーションの場合は、 Windows+R を選択し、「 ODBCAD32.EXE 」または「 C:\WINDOWS\SYSTEM32\ODBCAD32.EXE」と入力します。
32 ビット アプリケーションの場合は、 Windows+R を選択し、「 C:\WINDOWS\SYSWOW64\ODBCAD32.EXE」と入力します。
どちらの実行可能ファイルも odbcad32.exeという名前なので、フォルダー パスによって開く実行可能ファイルが決まります。 接続を行うアプリケーションのビット数とツールを常に一致させます。 32 ビット アプリケーションでは 64 ビット ODBC ドライバーを読み込めず、64 ビット アプリケーションでは 32 ビット ODBC ドライバーを読み込めませんでした。
ODBC 接続文字列の例
ODBC ドライバーを呼び出すアプリケーションでは、データ ソース名 (DSN) または DSN レス接続文字列を使用できます。 以下に例を示します。
driver={ODBC Driver 18 for SQL Server};server=sqlprod01;database=AdventureWorks;trusted_connection=yesdsn=userdsn1dsn=test;uid=<user name>;pwd=<password>
最初の接続文字列では、ドライバー名、サーバー名、データベース名、統合セキュリティ (trusted_connection) を使用するかどうかを明示的に指定します。 DSN レス接続です。
2 番目と 3 番目の接続文字列は、レジストリに格納されているこれらの項目のカプセル化である DSN を使用します。 ユーザー名とパスワードは DSN に格納できないため、明示的に指定する必要があります。 DSN 属性の詳細については、DSN 接続文字列属性を参照してください。
DSN は、アプリケーションがドライバーを読み込むためのショートカットであり、間接参照のレベルを提供します。 DSN を使用すると、アプリケーションを変更することなく、アプリケーションが接続するサーバー、データベース、さらにはデータベースの種類を変更できます。
接続文字列のドライバー名は、コンピューターに登録されているドライバーの名前と一致する必要があります。 ドライバー名と DSN 名では大文字と小文字は区別されませんが、スペルと句読点は完全に一致している必要があります。 登録されているドライバーが一致しない場合、ODBC ドライバー マネージャーはドライバーを読み込めなくなります。
注記
Windowsに付属する SQL Server ドライバー (sqlsrv32.dll) と SQL Server Native Client ドライバー (SQL Server Native Client 11.0) は、新しい開発には推奨されません。
SQL Server Native Client は、SQL Server 2022 (16.x) 以降のバージョン、または 19 以降のバージョンSQL Server Management Studio付属していません。 新しい接続の場合は、Microsoft ODBC Driver for SQL Serverを使用します。このドライバーは、Windows、Linux、macOS 用にダウンロードできます。
ODBC データ ソース管理者にドライバーと DSN が表示されることを確認する
ODBC データ ソース アドミニストレーターを使用して、ODBC ドライバーと DSN の存在を確認します。 アプリケーションのビット数に一致するコピーを開き、[ ドライバー ] タブでドライバーが一覧表示されているかどうかを確認します。 次のスクリーンショットは、64 ビットドライバーと 32 ビット ドライバーを示しています。
ドライバーが表示されている場合は、[システム DSN] タブまたは [ユーザー DSN ] タブでテスト DSN を作成し、接続テストを実行します。 テストが成功すると、ドライバーが読み込まれることと、サーバーに到達可能であることが確認されます。 ドライバーが一覧にない場合は、ドライバーを再インストールし、次のセクションで説明するようにレジストリ キーを確認します。
レジストリ内の ODBC ドライバーと DSN 情報
ドライバーと DSN の情報は、レジストリに格納されます。
64 ビット コンピューターでは、レジストリ リダイレクトによってドライバーとシステム DSN の 32 ビットと 64 ビットの情報が分離されます。
Wow6432Node レジストリ エントリには、32 ビット ドライバーとシステム DSN 情報が格納されます。 ユーザー DSN はリダイレクトされないため、32 ビットツールと 64 ビット ツールの両方にすべてのユーザー DSN が表示されます。 関連するキーは次のとおりです。
-
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC(64 ビット ドライバーとシステム DSN) -
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC(32 ビット ドライバーとシステム DSN) -
HKEY_CURRENT_USER\Software\ODBC(現在のユーザー用の DSN)
ODBC.INI サブキーには、すべての DSN と各 DSN のサブキーの一覧が含まれています。
ODBCINST.INIサブキーには、すべてのドライバーが一覧表示されます。
DSN を介してドライバーを読み込む際に問題が発生した場合は、 ODBC.INI サブキーを調べて、DSN が使用しているドライバーを確認してください。
また、 ODBCINST.INI の下に一覧表示されているドライバー パスが、ディスク上に存在する DLL ファイルを指していることを確認します。 見つからない DLL または移動された DLL を参照するレジストリ エントリは、アンインストール、アップグレード、または手動のファイルクリーンアップ後の読み込みエラーの一般的な原因です。 Microsoft ODBC Driver for SQL Server がインストールするファイル名と場所については、「システム要件、インストール、およびドライバー ファイル」を参照してください。
注記
LastUser エントリは接続文字列に影響しません。 これは、ODBC データ ソース アドミニストレーターで DSN をテストする場合にのみ使用されます。
エラー IM002 のトラブルシューティング: データ ソース名が見つからず、既定のドライバーが指定されていません
サーバー名、データベース名、ドライバーがインストールされているかどうかを検証します。 ドライバーを読み込めなかった場合は、次のエラー メッセージが表示されます。
ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません。
このエラーは、ODBC ドライバー マネージャーが接続文字列の DSN またはドライバー名を解決できなかったことを意味します。 次の項目を順番に確認します。
- 接続文字列の DSN 名は、ODBC データ ソース アドミニストレーターにリストされている DSN と一致します。
- 一致するビット数のドライバーがインストールされています。 ユーザー DSN は 32 ビット ツールと 64 ビット ツールの両方に表示されますが、その DSN が参照しているドライバーがアプリケーションのビット数に対応してインストールされていない場合、接続に失敗します。 詳細については、 ODBC アドミニストレーター ツールに 32 ビットユーザー DSN と 64 ビット ユーザー DSN の両方が表示されるを参照してください。
- システム DSN は、アプリケーションのビット数に一致するツールで作成されました。 システム DSN はレジストリ リダイレクトされるため、64 ビット ツールで作成されたシステム DSN は 32 ビット アプリケーションでは使用できません。
- DSN スコープは、アプリケーションを実行するアカウントと一致します。
HKEY_CURRENT_USERのユーザー DSN は、別のアカウントで実行されているサービスには表示されません。 サービスおよび Web アプリケーションにはシステム DSN を使用します。 - DSN なしの接続文字列内のドライバー名は、
ODBCINST.INIサブキーの下の一覧にあるドライバーと一致します。
DSN のドライバー パスが正しくない場合でも、ドライバー マネージャーは ODBC データ ソース レジストリ キーに一覧表示されているドライバー名から、 ODBCINST.INI サブキー内でそのパスを見つけることができます。
ドライバーが読み込まれるが、接続が失敗した場合、通常、問題はインストールの問題ではなく、ネットワーク、認証、または暗号化に関連します。 これらの症状については、SQL Serverでの接続の問題のトラブルシューティングを参照してください。
Microsoft以外の ODBC ドライバーのサポート
Microsoft以外の ODBC ドライバーの場合、Microsoftサポートは次のアクションに制限されます。
- ドライバー レジストリ キーが存在するかどうかを確認します。 インストールされていない場合は、ドライバーを再インストールするか、ベンダーに問い合わせてください。
- パスが存在する DLL ファイルを指しているかどうかを確認します。 インストールされていない場合は、ドライバーを再インストールするか、ベンダーに問い合わせてください。
- テスト DSN を作成し、接続テストを実行します。
- ベンダーが分析できる プロセス モニター (Procmon) トレースのキャプチャに役立ちます。
ドライバーの動作、ドライバーの欠陥、ドライバーのインストール ロジックは、ドライバーを生成したベンダーの責任のままです。
サードパーティの情報に関する免責事項
この記事で説明するサード パーティ製品は、Microsoft に依存しない企業によって製造されています。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。