作为标题,我在使用MSSQL 2012 Express从Linux服务器连接到服务器时遇到问题。
带有MSSQL的服务器:
Linux服务器:
脚本:
$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
答案 0 :(得分:0)
我刚才有这个完全相同的错误。对于我来说,它使用的是TCP动态端口,防火墙不允许这样做。由于它是一个动态端口,因此很难仅允许该端口。
您可以通过重新启动SQL Server实例进行检查,然后在事件查看器中查看SQL Server正在侦听的端口。
打开SQL Server配置管理器
然后打开“ SQL Server网络配置”>“ SQLEXPRESS协议(或您使用的任何数据库引擎)”>“ TCP / IP”>“ IP地址”
确保在IP地址中将TCP端口设置为您要使用的正确端口(不完全确定这是必需的,但不会造成损害)
现在,当您转到IPAll的最后一项时,将TCP动态端口设置为空。这将禁用动态端口选择,并在“ TCP端口”下填写要使用的“ TCP端口”
打开Windows高级防火墙,并允许您选择的端口接受连接(如果尚无规则)。
您应该在入站规则下添加一个规则,将其命名为SQL port或其他名称。在“允许连接”操作下
在协议和端口标签上,选择协议类型:“ TCP”,本地端口“特定端口”,“ 1433”(或您的端口号),远程端口“所有端口”
在范围上,对于本地的任何IP地址,对于远程,您都可以选择“任何”或添加要添加的IP列表
然后转到SQL Server Management Studio,右键单击服务器即时并选择重新启动以重新启动数据库服务器。
您会收到两个提示,一个来自uac。如果确实确定要重新启动,则从sql server中获取一个。第二个可能消失在其他窗口后面,并且可能需要一些时间才能显示出来。因此,点击重新启动后,请耐心等待,不要点击除了uac消息以外的内容。