在PHP中连接失败到MSSQL

时间:2016-12-21 10:44:34

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

我正在使用SQL Server 2014,我有这段代码连接到我的sql server:

<?php 

$serverName = "DESKTOP-P87SVPI\MSSQLSERVER";

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

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

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

}
?>

我收到了这个错误:

  

数组([0] =&gt;数组([0] =&gt; 08001 [SQLSTATE] =&gt; 08001 1 =&gt; 87   [code] =&gt; 87 2 =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] SQL   服务器网络接口:连接字符串无效[87]。   [message] =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] SQL Server   网络接口:连接字符串无效[87]。 )1 =&gt;   数组([0] =&gt; HYT00 [SQLSTATE] =&gt; HYT00 1 =&gt; 0 [代码] =&gt; 0 2 =&gt;   [Microsoft] [SQL Server的ODBC驱动程序11]登录超时已过期   [message] =&gt; [Microsoft] [SQL Server的ODBC驱动程序11]登录超时   已过期)2 =&gt;数组([0] =&gt; 08001 [SQLSTATE] =&gt; 08001 1 =&gt; 87   [code] =&gt; 87 2 =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] A.   发生了与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器   无障碍。检查实例名称是否正确以及SQL Server是否正确   配置为允许远程连接。有关更多信息,请参阅SQL   服务器书籍在线。 [message] =&gt; [Microsoft] [用于SQL的ODBC驱动程序11   Server]发生了与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器   无障碍。检查实例名称是否正确以及SQL Server是否正确   配置为允许远程连接。有关更多信息,请参阅SQL   服务器书籍在线。 ))

我在MSSQL中检查了这个:

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

它是一样的:

DESKTOP-P87SVPI\MSSQLSERVER

这些是我在phpInfo()中的驱动程序: enter image description here

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

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

尝试与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);
?>

希望这有帮助。

这应该是Job,如果没有,它与SQL-Server的设置有关!

答案 1 :(得分:0)

我使用此代码进行连接但也遇到问题所以我在连接中添加了ConnectionPooling=0然后它才有用!

 try {


$conn = new PDO("sqlsrv:server=serverName\serverInstance,1433;Database=db;ConnectionPooling=0", "user", "pass");

} catch (PDOException $e) {

    echo $e->getMessage();
}