从Centos7

时间:2017-08-31 12:55:58

标签: php sql-server linux centos7 sqlcmd

我使用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,而不是连接尝试期间的主机名,所以不要认为它是很重要。

现在我想出去哪里挖掘,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是由于网络配置错误造成的,我不确切地知道它是如何可能的 - 建立telnet连接,但无法正常连接,但我们的IT人员在不到半小时内修复了这个问题。