尝试从 tsql 连接到 sql-azure 时从服务器读取失败

Posted

技术标签:

【中文标题】尝试从 tsql 连接到 sql-azure 时从服务器读取失败【英文标题】:Read from the server failed when trying to connect to sql-azure from tsql 【发布时间】:2012-07-30 12:18:31 【问题描述】:

我正在尝试从 Ubuntu 12.04 连接到 SQL-Azure。

我已经用 openssl 和 libiconf 编译了 freeTds-0.91

tsql -H XXXXXXXX.database.windows.net -U Username -D DatabaseName -p 1433 -P Password

我尝试使用上述语句进行连接,但出现此错误:

locale is "en_ZA.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to DatabaseName
Error 20004 (severity 9):
    Read from the server failed
    OS error 104, "Connection reset by peer"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server

我的 tsql -C 输出:

Compile-time settings (established with the "configure" script)
                        Version: freetds v0.91
         freetds.conf directory: /usr/local/etc
 MS db-lib source compatibility: no
    Sybase binary compatibility: no
                  Thread safety: yes
                  iconv library: yes
                    TDS version: 5.0
                          iODBC: no
                       unixodbc: no
          SSPI "trusted" logins: no
                       Kerberos: no

我似乎找不到任何有关导致此问题的原因以及如何解决此问题的信息。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

错误是使用了错误的TDS版本。

要解决,只需在 tsql 命令之前指定 TDS 版本:

TDSVER=8.0 tsql -H XXXXXXXX.database.windows.net -U Username -D DatabaseName -p 1433 -P Password

【讨论】:

14.04 LTS 的 2015 年更新:改用 TDSVER=7.1。见:***.com/q/10889294/272735【参考方案2】:
in freetds.conf

[servername] 
host = ipAddress
port = 1433
tds version = 8.0

for checking freetds connection
===============================

$tsql -S servername -U username 
password

【讨论】:

如果您对此答案添加解释会有用 主要是“错误 20002(严重性 9):Adaptive Server 连接失败连接到服务器时出现问题”,这是由于 freetds.conf 中的未命中声明而发生的。有些可能会将文件保存在 /etc/freetds.conf 中,有些可能会将其保存在 /usr/local/etc 中。在 freetds.conf 的行尾添加给定的代码,我提到将其放入 freetds.conf ... 并使用 tsql 命令检查 freetds 连接。我想它可能对你有用。【参考方案3】:

您的 IP 地址是否被数据库服务器列入白名单?否则,您将无法连接。

【讨论】:

【参考方案4】:

使用 TDS 8.0 版本对我有用。

只需输入/etc/freetds/freetds.conf 即可永久保留

【讨论】:

以上是关于尝试从 tsql 连接到 sql-azure 时从服务器读取失败的主要内容,如果未能解决你的问题,请参考以下文章

tsql 登录失败,但管理工作室可以连接

从 Rackspace 连接到 Redshift

如何从 php 连接到 mssql?

tsql 实用程序 (FreeTDS) 可以连接到 SQL Server,但 pymssql 不能

为啥我可以使用 tsql 而不是 pymssql 连接到 Azure MS SQL?

未连接到服务器时从 Android webview 中的应用程序缓存加载