(64 ビット) Windows に php 5.3.5 を使用して Xampp をインストールし、(32 ビット) SQL Server 2005 でサードパーティの ODBC ドライバーを使用してデータベースに接続したいのですが、常に同じ間違い「SQL エラー: データ ソース」が発生します。 name not found and no default driver specified”. システム DSN を作成し、odbc_connect を使用して接続しようとしています。
4 に答える
Windows 64 ビットには 2 つの ODBC ドライバー マネージャーがあります。間違ったものを使用した疑いがあります。xampp が 32 ビットか 64 ビットかを調べる必要があり、適切な ODBC アドミニストレーターで DSN を定義する必要があります。64 ビット ODBCを参照してください。詳しく説明されています。
問題は通常、sqlncli.dll
何らかの理由で適切に登録されていないことにあることがわかりました。dll
ファイル自体の問題、レジストリへのアクセス許可などが原因である可能性があります。
このエラーを解決する方法は次のとおりです。
Open Regedit
Navigate to H_KEY_LOCAL_MACHINE\Software\ODBC\ODBCINST
NOTE: If it is a 64 bit computer and you are working with a 32-bit SQL install, the path will probably actually be H_KEY_LOCAL_MACHINE\Software\WOW6432Node\ODBC\ODBCINST
ODBCINST キーで、SQL Native Clent regkey が存在することを確認します。それをクリックして、すべての値が画面の右側に表示されることを確認します。次のように表示されます。
(Default) REG_SZ (value not set)
APILevel REG_SZ 2
Connectfunctions REG_SZ YYY
CPTimeout REG_SZ 60
Driver REG_SZ c:\windows\system32\slncli.dll
DriverODBCVer REG_SZ 09.00
FileUsage REG_SZ 0
Setup REG_SZ c:\Windows\System32\sqlncli.dll
SQLLevel REG_SZ 1
Usagecount REG_DWORD 0x00000001 (1)
(デフォルト) エントリしか表示されない場合は、slncli.dll が正しく登録されていません。これは、SQL Native Client ODBC ドライバーが正しく登録されていないことを意味します。
次のように進めます。
管理者としてログインしていることを確認してください。現在ログインしているユーザーに、regkey に対するフル コントロール アクセス許可を付与します。アクセス許可を設定できるようにするには、キーの所有権を取得する必要がある場合があることに注意してください。regkey の所有権を取得してアクセス許可を設定する方法を説明するリソースはたくさんあるので、ここでは詳しく説明しません。
キーに対する完全な制御権限を取得すると、値が画面の右側に表示されるだけになります。これは、単に権限の問題であったことを意味します。
それでも値が表示されない場合は、次のステップとして、それがフォルダーまたはフォルダー (64 ビット システムの場合) にsqlncli.dll
存在することを確認します。存在しない場合は、別の PC からコピーを取得する必要があります。ファイルを取得する PC の OS が、ファイルがない PC と同じであることを確認してください。Windows\System32
Windows\SysWow64
ファイルが存在する場合は、ファイルのバージョンを確認してください。SQL 2005 はバージョン 9.00.4035.00 を使用します。ファイルのバージョンが表示されていない場合は、ファイルが破損しているため、別の PC からコピーを取得する必要があります。
ファイルが存在し、バージョンがリストされている場合は、regsvr32 を使用してコマンド ラインから手動で登録します。
おそらく、それが明確に言うように、ドライバーを持っていないでしょう:) x32およびx64をダウンロードしてください。- ここ
https://www.microsoft.com/en-us/download/details.aspx?id=13255
いらっしゃいませ。
私はちょうどこの問題で半日を過ごし、最終的にそれを理解しました - 少なくとも私の状況では。このスレッドが少し古いことは知っていますが、それでも関連性がありました。
osql.exe のバージョンが、使用しているネイティブ クライアントのバージョンと一致していることを確認する必要があります。2005 年の osql.exe と 2008 R2 のネイティブ クライアントがありました。'08 R2 osql.exe を使用するとすぐに、すべてが期待どおりに機能しました。