【发布时间】:2018-05-26 10:02:36
【问题描述】:
尝试使用默认端口号连接到我的 Microsoft SQL Server 数据库时出现以下错误:
Error. Cannot connect to database: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired
这是我用来连接数据库的 PHP 代码:
<?php
class DB_Connect {
private $db;
function construct() {
}
public function connect() {
require_once 'String.php';
try {
$this->db = new PDO('sqlsrv:Server=$server,1433; Database=$db', $user, $pass);
} catch (PDOException $e) {
return "Error. Cannot connect to database: " . $e->getMessage();
}
}
}
?>
我 100% 确定凭据是正确的,因为当我使用 xampp 在 localhost 上运行脚本时它们是有效的。
到目前为止我做了什么:
- 在linux机器上安装了pdo驱动
- 在linux机器上安装了obdc驱动
- 在 linux 机器上安装了 sqlsrv 驱动程序
这是我在服务器上使用的配置:
PHP 版本 7.0.30 连接到 Gearhost 上托管的 SQL Server 2017。
谁能解释一下可能出了什么问题?
【问题讨论】:
-
我认为只需将单引号改为双引号 $this->db = new PDO("sqlsrv:Server=$server,1433; Database=$db", $user, $pass) ;
-
还是同样的错误
-
您能否使用具有相同服务器名称和凭据的 SQL Server Management Studio 连接到 Gearhost 上托管的 SQL Server 2017?
-
是的,当然可以。它适用于 SQL 服务器
-
我认为问题可能与 SQL Server TCP/IP 动态端口配置有关。对不起,我无法重现你的场景(我没有 LINUX 机器)。我认为这个链接很有用:stackoverflow.com/questions/48651225/….