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



我知道这个问题被问了很多次,我试过了,但都没有成功。我正在尝试连接到与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的内容

[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:连接到54.214.30.231端口1433(TDS版本4.2)失败

当我用tsql-C检查TDS版本4.2时,错误显示它安装在我的机器中,但我在conf文件中指定了7.3。是原因吗?如果是,我如何升级版本?如果这不是原因,那么有人能告诉我我做错了什么吗?

我认为odbc配置文件中缺少一个字母I。它应该代替odbc.inaodbc.ini

来自isql手册页:

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

isql DSN[USER[PASSWORD]][选项]描述

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

iusql也是一个内置Unicode支持的工具。参数

DSN-

  • 数据源名称,应用于连接到数据库。在/etc/odbc.ini$HOME/.odbc.ini文件,后者覆盖前者的

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

  • 指定USER的PASSWORD密码。

/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>

最新更新