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

Awa*_*rni 11 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
Run Code Online (Sandbox Code Playgroud)

来自/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
Run Code Online (Sandbox Code Playgroud)

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

[mssql]

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

  tds version = 7.3
  client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)

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

  tsql -S mssql -U username -P password
Run Code Online (Sandbox Code Playgroud)

但是当我跑步的时候

  isql -v mssql username password
Run Code Online (Sandbox Code Playgroud)

经过近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
Run Code Online (Sandbox Code Playgroud)

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

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

tuk*_*kan 2

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

\n\n

来自isql 男人页:

\n\n
\n

isql, iusql \xe2\x80\x94 unixODBC 命令行交互式 SQL 工具 概要

\n\n

isql DSN [用户 [密码]] [选项] 说明

\n\n

isql 是一个命令行工具,允许用户批量或交互地执行 SQL。它有一些有趣的选项,例如用于生成包含在 HTML 表中的输出的\n 选项。

\n\n

iusql 是具有内置 Unicode 支持的同一工具。论据

\n\n

数据服务网络

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

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

  • \n
  • PASSWORD 指定用户的密码。

  • \n
\n
\n\n

也同样如此/etc/odbcinst.in。应该/etc/odbcinst.ini

\n\n

根据评论进行编辑

\n\n

Adrian 在你的情况下,我认为最好创建一个新问题,因为这个错误号与 OP 不同。

\n\n

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

\n\n

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

\n\n

现在配置看起来像这样(我必须猜测,因为我没有看到你的配置):

\n\n
[mssql]\nDescription = "My MSSQL DB for data science"\nDriver = FreeTDS\nServerName = mssql\nServer = <ip_address>\nPort = 1433\nDatabase = My Database //database has space\nUsageCount = 1\nTDS_Version = 7.3\ninstance = <my_mssql_instance>\n
Run Code Online (Sandbox Code Playgroud)\n