我正在使用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
我还检查了MSSQL中的远程连接,并允许它。
如何解决这个问题?
答案 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();
}