0

私は、MS SQL Server 2005 をデータベースとして (別の Windows サーバー上で) PHP で記述されたサイト (Apache の下の Windows サーバー上で実行) で作業しています。

このエラーは、実行中に散発的に発生しますsqlsrv_connect:

Sql State: 08001
Code:      53
Message:   [Microsoft][SQL Server Native Client 10.0]
           A network-related or instance-specific error has occurred while 
           establishing a connection to SQL Server. Server is not found or not 
           accessible. Check if instance name is correct and if SQL Server is 
           configured to allow remote connections. For more information see SQL 
           Server Books Online.

他の人がこのエラーを経験した多くの議論のいくつかを調べましたが、それらのほとんどは、データベースに完全に到達できない原因となるセットアップの基本的なエラーに関連しています. (前述のとおり、この問題は散発的です。)

私が排除したエラーのもう 2 つの考えられる原因は DNS です。接続文字列でサーバーの IP アドレスを使用していますが、サーバーの明らかな過負荷ではありません。利用可能なリソースが十分にあり、Activity Monitor には、実行中の過度に高価なクエリや長時間実行中のバックグラウンド ジョブは表示されません。

エラーが発生するコードは次のとおりです。

    $conn = sqlsrv_connect(
        "[snip ip number of server]",
        array(
            'Database' => '[snip database name]',
            'LoginTimeout' => 5,
            'CharacterSet' => 'UTF-8',
            'UID'=>'[snip user name]',
            'PWD'=>'[snip password]'
        )
    );
    $res = array();
    $status = array();
    /* check for connection errors */
    if($debug) {
        if( !$conn ) {
            if( ($errors = sqlsrv_errors() ) != null)
                ...error handling here...

上記のコードは私が書いたものではありません - 私は通常、その書き方に満足していません。

このコードは、クエリをデータベースに送信する必要があるsqlsrv_connect たびに呼び出します。この(悪い)慣行が上記のエラーの原因である可能性があることを経験した人はいますか?

これが当てはまらない場合、他に何か提案がありますか。この問題の原因は?

4

1 に答える 1