[S1000] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源

时间:2017-11-10 11:11:25

标签: sql-server odbc freetds

我知道这个问题被多次询问,我已经尝试了所有但没有任何效果。我试图连接到与Ubuntu 14.04不同的服务器上的MSSQL数据库。

来自/etc/odbcinst.in的内容

 [ODBC]
 Trace = No
 TraceFile = /tmp/odbc.log

 [FreeTDS]
 Description = FreeTDS
 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
 Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
 UsageCount = 1
 fileusage=1
 dontdlclose=1

来自/etc/odbc.in的内容

 [mssql]
 Driver = FreeTDS
 ServerName = mssql
 Port = 1433
 Database = My Database //database has space
 Driver=/usr/local/lib/libtdsodbc.so
 UsageCount = 1
 TDS_Version = 7.3
  instance = SQLEXPRESS

[Default]
Driver=/usr/local/lib/libtdsodbc.so

/etc/freetds/freetds.conf中的mssql部分

[mssql]

 host = server ip
 port = 1433
  database = My Databas
 instance = SQLEXPRESS

  tds version = 7.3
  client charset = UTF-8

当我运行以下命令时,它会生成增加的数字

  tsql -S mssql -U username -P password

但是当我跑步时

  isql -v mssql username password

几乎30个部分后,它返回

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[08S01][unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
[ISQL]ERROR: Could not SQLConnect

net.c:205:FAILED连接到54.214.30.231端口1433(TDS版本4.2)

当我用tsql -C检查时,错误显示在我的机器上安装的TDS版本4.2但我在conf文件中指定了7.3。是原因吗?如果是这样,我该如何升级版本?如果不是原因那么有人可以让我知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

我认为您在odbc配置文件中缺少字母 i 。应该代替odbc.in odbc.ini

isql man页中:

  

isql,iusql — unixODBC命令行交互式SQL工具简介

     

isql DSN [USER [PASSWORD]] [选项]说明

     

isql是一个命令行工具,允许用户在   批量或交互式。它有一些有趣的选项,例如   选项以生成包装在HTML表中的输出。

     

iusql是具有内置Unicode支持的相同工具。争论

     

DSN

     
      
  • 数据源名称,该名称应用于建立与数据库的连接。在 /etc/odbc.ini 中查找数据源,然后    $ HOME / .odbc.ini 文件的顺序,后者覆盖   前任的。

  •   
  • USER指定应在其下建立连接的数据库用户/角色。

  •   
  • 指定用户的密码。

  •   

/etc/odbcinst.in也是如此。应该为 /etc/odbcinst.ini

编辑基于评论

在您的情况下,阿德里安(Adrian)我认为最好创建一个新问题,因为此错误号不同于OP。

错误消息: [IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified [ISQL]ERROR: Could not SQLConnect.

根据您的错误消息,您需要向Server=ip_address添加odbc.ini选项(我建议也添加描述)。不要忘记括号[mssql]中的名称必须为ServerDSN!您确定在TDS_Version = 7.3上指定了正确的TDS版本吗? Driver中的/etc/odbcinst.ini指令就足够了。为什么有两个不同的驱动程序-Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.soDriver=/usr/local/lib/libtdsodbc.so是第二个唯一的符号链接?

现在配置看起来像这样(我不得不猜测,因为我没有看到您的配置):

[mssql]
Description = "My MSSQL DB for data science"
Driver = FreeTDS
ServerName = mssql
Server = <ip_address>
Port = 1433
Database = My Database //database has space
UsageCount = 1
TDS_Version = 7.3
instance = <my_mssql_instance>