从PHP到MS SQL的偶发连接错误

时间:2013-06-14 12:52:42

标签: php sql-server-2005

我正在开发一个用PHP编写的网站(在Apache下的Windows服务器上运行),MS SQL Server 2005作为数据库(在另一台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.

我已经讨论了其他人遇到此错误的许多讨论中的一些,但其中大多数都与设置中的基本错误有关,这些错误会导致数据库完全无法访问。 (如上所述 - 这个问题是零星的。)

我消除的另外两个可能的错误来源是DNS - 我在连接字符串中使用服务器的IP地址,并且它没有明显的服务器重载。它具有大量可用资源,并且活动监视器不会显示任何运行过于昂贵的查询或长时间运行的后台作业。

以下是发生错误的代码:

    $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 。有没有人经历过这种(不好的)做法可能是上述错误的原因?

如果不是这样,那么还有其他建议吗?造成这个问题的原因?

1 个答案:

答案 0 :(得分:0)

重新启动SQL Server后,错误停止显示。我认为这太局部了。