【问题标题】:Connection failed to MSSQL in php在 php 中连接到 MSSQL 失败
【发布时间】:2017-05-06 18:20:40
【问题描述】:

我使用的是 SQL Server 2014,我有这段代码可以连接到我的 sql 服务器:

<?php 

$serverName = "DESKTOP-P87SVPI\MSSQLSERVER";

$connectionInfo = array("Database"=>"map2");

$conn = sqlsrv_connect($serverName,$connectionInfo);

if ($conn){
echo "finally";
}
else {
print_r( sqlsrv_errors());

}
?>

我收到了这个错误:

数组 ( [0] => 数组 ( [0] => 08001 [SQLSTATE] => 08001 1 => 87 [代码] => 87 2 => [Microsoft][ODBC Driver 11 for SQL Server]SQL 服务器网络接口:连接字符串无效 [87]。 [消息] => [Microsoft][ODBC Driver 11 for SQL Server]SQL Server 网络接口:连接字符串无效 [87]。 ) 1 => 数组 ( [0] => HYT00 [SQLSTATE] => HYT00 1 => 0 [代码] => 0 2 => [Microsoft][ODBC Driver 11 for SQL Server]登录超时已过期 [消息] => [Microsoft][ODBC Driver 11 for SQL Server]登录超时 过期)2 => 数组([0] => 08001 [SQLSTATE] => 08001 1 => 87 [code] => 87 2 => [Microsoft][ODBC Driver 11 for SQL Server]A 发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。未找到服务器 无障碍。检查实例名称是否正确以及 SQL Server 是否正确 配置为允许远程连接。有关详细信息,请参阅 SQL 服务器联机丛书。 [消息] => [Microsoft][ODBC Driver 11 for SQL 服务器]发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。未找到服务器 无障碍。检查实例名称是否正确以及 SQL Server 是否正确 配置为允许远程连接。有关详细信息,请参阅 SQL 服务器联机丛书。 ))

我在 MSSQL 中检查了这个:

select @@servername + '\' + @@servicename

而且是一样的:

DESKTOP-P87SVPI\MSSQLSERVER

这些是我在 phpInfo() 中的驱动程序:

我还检查了 MSSQL 中的远程连接,它是允许的。

如何解决这个问题?

【问题讨论】:

    标签: php sql-server sql-server-2014


    【解决方案1】:

    我使用此代码连接但也有问题,所以我在连接中添加了ConnectionPooling=0 然后它工作了!

     try {
    
    
    $conn = new PDO("sqlsrv:server=serverName\serverInstance,1433;Database=db;ConnectionPooling=0", "user", "pass");
    
    } catch (PDOException $e) {
    
        echo $e->getMessage();
    }
    

    【讨论】:

      【解决方案2】:

      你确定你的服务器没有使用密码吗?

      尝试将连接与 PDO 挂钩:

          <?php
        try {
          $hostname = "localhost/MSSQLSERVER";
          $port = 10060;
          $dbname = "dbname";
          $username = "dbuser";
          $pw = "password";
          $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
        } catch (PDOException $e) {
          echo "Failed to get DB handle: " . $e->getMessage() . "\n";
          exit;
        }
        $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()");
        $stmt->execute();
        while ($row = $stmt->fetch()) {
          print_r($row);
        }
        unset($dbh); unset($stmt);
      ?>
      

      希望这会有所帮助。

      这应该可以完成工作,如果不是,它与您的 SQL-Server 的设置有关!

      【讨论】:

      • 我用的是windows认证不管有没有通过
      • mysql:host ?我正在使用 MSSQL
      • 您的解决方案出现异常:找不到驱动程序,但谢谢
      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2020-05-11
      相关资源
      最近更新 更多