2

PHPを使用してMSSQLデータベースに接続しようとしていますが、接続しようとすると非常に苛立たしいエラーが発生します。次のメッセージを出力する前に、1分間ロードされます。

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08001]: 
[Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]. 

これが私の接続文字列です:

DB::config("sqlsrv:Server={$dbHost} ; Database={$dbName}", $dbUser, $dbPass);

そして私のDBクラスでは:

public static function config($dsn, $user, $pass)
    {
        self::$_pdo = @new PDO($dsn, $user, $pass);
        ...// intentionally left out

私はとても困惑しています。php.iniファイルに次のモジュールが構成されています:extension=php_pdo_sqlsrv_54_ts.dll。正しくインストールしたと思いますが、ドライバーが機能していないというエラーメッセージは表示されませんが、このPHPのビットは何も出力しません。

if (function_exists( 'sqlsrv_connect' ))
    echo "hey";

上記のエラーメッセージからわかるように、SQL Server NativeClient11は機能しているようです。私はWindowsプラットフォームを使用しています。ファイアウォールを無効にしてみましたが無駄になりました。SQLサーバーに関する情報があまりないか、ここで共有します。

Stackに投稿するのはこれが初めてなので、重要な情報を省略したり、何らかの方法で適切なエチケットに従わなかったりした場合はお詫びしますが、助けていただければ幸いです。


また、私はすでにグーグルをやりすぎて、成功していません。

4

2 に答える 2

6

私のインストールプロセスは実際に機能しましたが、接続は実際に無効でした。ホスト名としてIPアドレスを使用する必要がありましたが、使用していませんでした。また、ポート番号の前にコンマの代わりにコロンを使用していました。最後に、接続文字列にスペースを入れることはできません。これは自動的に削除されると思いました。したがって、同様の苦境に陥っている可能性のある人のための有効な接続文字列は次のとおりです。

$connectionString="sqlsrv:Server=123.123.12.1,9864;Database=mssqldatabaseWootWoot";

また、その関数sqlsrv_connectに関する以前の観察に応えて、その関数に必要なドライバーを有効にしませんでした。これはphp_sqlsrv_54_ts.dllにあり、有効にした後、関数が存在することを報告します。

これを解決するために時間を割いてくれた人に感謝します。

于 2013-03-28T04:56:51.630 に答える
1

同じ問題が発生しましたが、IPアドレスを使用する必要がないことがわかりました。サーバー名は、問題なく機能しました。また、サーバーが使用しているポートがわからなかったので、ここで情報を見つけました:MS SQL Server 2008のポートを見つける方法は?

また、PDOを機能させるのに役立つ次のリンクも見つかりました。

統合されたセキュリティを備えたSQLServerへのPHPPDO接続?

クラスでのPDOの使用

MS SQL Server(PDO)— Microsoft SQL Server関数(PDO_SQLSRV)

ncksllvnが彼の問題を解決したことを知っているので、これが他の人が訪れる人に役立つことを願っています!

于 2013-05-23T21:44:37.417 に答える