从Centos7到mssql的连接错误
问题描述:
我用nginx/php5.6安装Centos7。 MS SQL 2008 R2正在另一台服务器上工作。 MSSQL绝对允许TCP连接,自定义(非域)用户,防火墙被禁用,我可以使用HeidiSQL连接到它并从另一台Windows机器进行设置。 我可以从Centos远程登录到MSSQL(我看到日志错误“网络数据包有效载荷中指定的长度与读取的字节数不匹配;连接已关闭,请与客户端库的供应商联系”。 MSSQL日志,所以这里没有错误)。从Centos7到mssql的连接错误
我无法使用php_mssql或sqlcmd从centos连接到mssql;
在SQLCMD:
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
[[email protected]***]# /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
[[email protected]*]# 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
还试图清理这一切,并安装php7.0与sqlsrv扩展 - 同样的问题;
有一些网络很奇怪 - Centos serv和MSSQL位于不同的网络中,我无法从该服务器ping通mssql,但可以telnet,我在连接尝试期间使用ip而不是主机名,所以不要认为这是一个大问题。
现在我不知道该在哪里挖掘,有什么建议吗?
答
这是由于网络配置错误导致的,我不明白怎么可能 - 做telnet连接,但连接失败,但我们的IT人员在不到半个小时的时间内修复了这个问题。
您是否尝试过使用[PDO with dblib driver](http://php.net/manual/en/ref.pdo-dblib.php)?在使用php 5.6和MSSQL Server 2k8的debian上工作得很好... – Ayak973
@ Ayak973谢谢你的想法,是的,同样的错误。但是问题解决了,这是由于网络配置错误造成的,我不明白它是如何实现的 - 建立telnet连接,但无法正常连接,但我们的IT人员在不到半个小时的时间内修复了这个问题。 – NiPh