我使用nginx / php5.6安装了Centos7。 MS SQL 2008 R2正在处理另一台服务器。 MSSQL肯定允许tcp连接,自定义(非域)用户,防火墙禁用,我可以使用HeidiSQL和其他Windows机器的设置连接到它。 我可以从Centos telnet到MSSQL(我看到日志错误“网络数据包有效负载中指定的长度与读取的字节数不匹配;连接已关闭。请联系客户端库的供应商。”在MSSQL中使用centos ip地址记录,所以这里没有错误。)
我无法使用php_mssql或sqlcmd从centos连接到mssql;
在sqlcmd期间:
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
[root@***]# /opt/mssql-tools/bin/sqlcmd -S *** -U ***
Password:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Timeout error [258]. .
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Unable to complete login process due to delay in prelogin response.
在php互动期间:
php > mssql_connect('***:***', '***','***');
PHP Warning: mssql_connect(): Unable to connect to server: *** in php shell code on line 1
我也试过tsql / freetds:
/etc/freetds.conf has section
[myserver]
host = ***
port = ***
client charset = UTF-8
tds version = 8.0 //also tried 7
[root@*]# tsql -S myserver -U ***
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
5 //begins to count, i could't understand what does it mean
还尝试清理它并安装带有sqlsrv扩展名的php7.0 - 同样的问题;
有一些网络奇怪 - Centos serv和MSSQL在不同的网络中,我无法从该服务器ping mssql,但可以telnet,我使用ip,而不是连接尝试期间的主机名,所以不要认为它是很重要。
现在我想出去哪里挖掘,有什么建议吗?
答案 0 :(得分:0)
这是由于网络配置错误造成的,我不确切地知道它是如何可能的 - 建立telnet连接,但无法正常连接,但我们的IT人员在不到半小时内修复了这个问题。