其他服务器上的PHP和MSSQL 2012 Express数据库-连接错误
作为标题,我在使用MSSQL 2012 Express从Linux服务器连接到服务器时遇到问题 具有MSSQL的服务器: 视窗8 MSSQL 2012 Express,已打开且运行正常; 路由器上dyndns.org端口上的IP已正确转发,1433已打开且“正在侦听”; Windows防火墙已禁用; 路由器防火墙被禁用; 使用Linux的服务器: php5.2; 脚本:其他服务器上的PHP和MSSQL 2012 Express数据库-连接错误,php,sql,sql-server,linux,Php,Sql,Sql Server,Linux,作为标题,我在使用MSSQL 2012 Express从Linux服务器连接到服务器时遇到问题 具有MSSQL的服务器: 视窗8 MSSQL 2012 Express,已打开且运行正常; 路由器上dyndns.org端口上的IP已正确转发,1433已打开且“正在侦听”; Windows防火墙已禁用; 路由器防火墙被禁用; 使用Linux的服务器: php5.2; 脚本: $server = 'xxxxxxx.dyndns.org'; $username = 'xxxxxxx'; $passw
$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配置管理器 然后打开SQL Server网络配置>SQLExpress协议或您正在使用的任何db引擎>TCP/IP>IP地址 确保在您的IP地址中,您的TCP端口被设置为您希望使用的正确端口。不完全确定这是否需要,但不会造成伤害 现在,当您转到最后一项IPAll时,请将TCP动态端口设置为空。这将禁用动态端口选择,并填写您希望在TCP端口下使用的TCP端口 打开windows高级防火墙,并允许所选端口接受连接(如果还没有相关规则) 您应该在入站规则下添加一个规则,将其命名为SQL端口或其他名称。在操作下允许连接 在“协议和端口”选项卡上,选择协议类型:TCP、本地端口特定端口1433或您的端口号、远程端口所有端口 在作用域上,对于本地IP地址,对于远程IP地址,您可以选择任意IP地址或添加您希望添加的IP地址列表 然后转到SQL Server Management Studio,在服务器上单击鼠标右键,然后选择“重新启动”以重新启动数据库服务器
您将收到两个提示,一个来自uac。然后,如果确实希望重新启动,请从sql server中选择一个。第二个窗口可能会消失在其他窗口后面,需要一些时间才能出现。因此,点击重启后,请耐心等待,不要点击uac消息以外的内容。如果我理解正确,您可以在家运行MS Windows服务器吗?哇!在该服务器上,您在路由器后面运行mssql数据库,并希望使用dyndns从外部连接到该服务器?如果路由器上没有端口转发,这将不起作用。客户端尝试连接到路由器,而不是mssql服务器。路由器连接到dyndns,并已将端口1433转发到192.168.1.34:1433。那么,如果从linux系统到路由器进行简单的telnet测试,您会得到什么?telnet xxxxxxx.dyndns.org 1433?那么,telnet测试显示了什么?连接失败:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应连接失败而导致建立的连接失败:由于连接方在一段时间后未正确响应而导致连接尝试失败,或者由于连接的主机未能响应xxx.xxx.xxx:1433而导致建立的连接失败