DB服务器是192.168.0.1 应用服务器是192.168.1.1
测试用应用服务器是192.168.0.2
dll用的是微软提供的【php_sqlsrv_ts.dll】
source如下$connectionInfo = array( "Database"=>DB_DATABASE,"UID"=>DB_SERVER_USERNAME,"PWD"=>DB_SERVER_PASSWORD);
$conn = sqlsrv_connect( DB_SERVER, $connectionInfo);
在应用服务器连接DB服务器报错,$conn是False,
但是从测试用应用服务器连接DB服务器,一切正常。
用ping,DB服务器到应用服务器,应用服务器到DB服务器都可以ping通。
在应用服务器用telnet 192.168.0.1 1433也正常。
基本可以排除网络的问题。各位高手帮看下为什么会出现这个情况

解决方案 »

  1.   

    看一下log中,$conn具体是什么错误
      

  2.   

    回楼上的,在
    $conn = sqlsrv_connect( DB_SERVER, $connectionInfo);
    这句coding没有报错,而是在sql检索的时候报出的错误
    错误信息:
    [08-Sep-2009 17:19:15] PHP Warning:  sqlsrv_query() expects parameter 1 to be resource, boolean given in C:\wamp\www\test\common\login.php on line 52
      

  3.   

    因为在测试用应用服务器成功连接过,并且所有功能也跑过,所以sql语句肯定是没有问题的。
    在$conn = sqlsrv_connect( DB_SERVER, $connectionInfo);
    这句coding下面用
    echo"<pre>";
    var_dump($conn);
    打印出的值是False。
      

  4.   

    sqlsrv_query()函数参数不对,应该是一个数据库连接变量,比如你上面的$conn.
      

  5.   

    那就还是sqlsrv_connect没有成功,所以$conn=false是一个boolean值,而不是sqlsrv_query所需要的resource
      

  6.   


    我copy过来的log信息。
    coding是这样的 $searchSql ="select * from user ";
    $searchSql.="where user_cd = '$login_userCd' ";
    $searchSql.="and password='$login_pwd' ";
    $searchSql.="and delete_flg = 0 ";
    $result = sqlsrv_query($conn, $searchSql);
      

  7.   

    恩,我想问的就是用【php_sqlsrv_ts.dll】来做数据连接时,
    发生这样的问题是什么原因。source肯定是正常的。
    因为在测试应用服务器已经跑过了
      

  8.   

    1、确认你的这些服务器在一个网段之中(按你给出的ip,很可能不在同一网段)
    2、sql server 2005 默认是不暴露在网络中的,又要做网络应用需要做相关设置,你做了吗?当满足上述条件后,使用 php_mssql.dll 扩展就已经可以了。
    至于 php_sqlsrv_ts.dll 扩展,由于没有使用过,就不好说什么了
      

  9.   

    谢谢楼上回答。
    关于1 : 2个服务器的网段确实不在一个里。php里应用服务器和db服务器必须是一个网段里的吗?
    关于2 : remote设置已经做过了。
      

  10.   

    问题已经解决好,应用服务器和DB服务器分开始,应用服务器要安装Native Client。
    文件名是sqlncli.msi。