其他服务器上的 PHP 和 MSSQL 2012 Express 数据库 - 连接错误

标签 php sql sql-server linux

如标题所示,我在使用 MSSQL 2012 Express 从 Linux 服务器连接到服务器时遇到问题。

带有 MSSQL 的服务器:

  • Windows 8
  • MSSQL 2012 Express,已打开并正常运行;
  • dyndns.org 上的 IP(路由器上的端口已正确转发,1433 已打开并“监听”);
  • Windows 防火墙已禁用;
  • 路由器防火墙被禁用;

带有 Linux 的服务器:

  • PHP 5.2;

脚本:

$server   = 'xxxxxxx.dyndns.org';
$username = 'xxxxxxx';
$password = 'xxxxxxx';
$database = 'xxxxx';

if (mssql_connect($server, $username, $password))
{
    echo "CONNECTION SUCCESS!";
}
else
{
    echo "CONNECTION FAIL";
}

结果:

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: xxxxxxx.dyndns.org in (....) on line 8


Connection failed: A connection attempt failed because the connected party did 
not properly respond after a period of time, or established connection failed 
because connected host has failed to respond Connection failed: A connection 
attempt failed because the connected party did not properly respond after a 
period of time, or established connection failed because connected host has failed 
to respond xxx.xxx.xxx.xxx:1433

最佳答案

我刚才遇到了完全相同的错误。我使用的是 TCP 动态端口,不允许通过防火墙。由于它是一个动态端口,因此很难仅允许该端口。

您可以通过重新启动 SQL Server 实例来进行检查,如果遇到相同的问题,然后在事件查看器中查看 SQL Server 正在监听的端口。

Sql server listening on wrong port

打开 SQL Server 配置管理器

然后打开 SQL Server 网络配置 > SQLEXPRESS 协议(protocol)(或您正在使用的任何数据库引擎)> TCP/IP > IP 地址

Where to browse in SQL server configuration manager

确保在您的 IP 地址中将您的 TCP 端口设置为您希望使用的正确端口(不完全确定这是必需的,但不会造成伤害)

现在,当您来到最后一项 IPAll 时,将 TCP 动态端口设置为空。这将禁用动态端口选择,并在 TCP 端口下填写您希望使用的 TCP 端口

Set TCP Dynamic ports to empty

打开 windows 高级防火墙并允许您选择的端口接受连接,如果还没有规则的话。

您应该在入站规则下添加一条规则,将其命名为 SQL 端口或其他名称。在“允许连接”操作下 setting up firewall rule

在协议(protocol)和端口选项卡上选择协议(protocol)类型:“TCP”,本地端口“特定端口”“1433”(或您的端口号),远程端口“所有端口”

Defining ports

在范围内,本地的任何 IP 地址,对于远程,您可以选择“任何”或添加您希望添加的 IP 列表

Where to allow connections from

然后转到您的 SQL Server Management Studio 并右键单击服务器即时并选择重新启动以重新启动数据库服务器。

Restart SQL Server

您将收到两个提示,一个来自 uac。如果您真的确定要重新启动,那么从 sql server 中获取一个。第二个可能会消失在其他窗口后面,并且可能需要一些时间才能出现。因此,在点击重启后,请耐心等待,不要点击除 uac 消息以外的内容。

关于其他服务器上的 PHP 和 MSSQL 2012 Express 数据库 - 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798915/

相关文章:

mysql - 将多行数据组合成同行不同列 : mysql

c# - 如何将 DataAdapter 的超时时间增加到 3 分钟?

SQL Server 可为空的数据类型大小

sql - 慢速子查询 IN 子句?

php - Laravel 使用哈希作为验证器

php - 在mysqli中调用两个存储过程导致 'Commands out of sync'错误

PHP - 基本选择查询只返回 mysql 数据库的第一行

sql - 当所有重叠的日期范围同时重叠时获取所有重叠的日期范围

javascript - datepicker 显示基于年份的日期 - JQuery

php - 我更新了 wamp 服务器,laravel 项目出现错误([PDOException] 找不到驱动程序)?