我正在try 从Linux上的python(SLES)连接到MSSQL数据库.

我已经安装了pyodbc和免费TDS.从命令行执行以下操作:

tsql -H server -p 1433 -U username -P password

但是,从Python连接到服务器没有问题:

import pyodbc
pyodbc.connect(driver='{FreeTDS}', server='server', database='database', uid='username', pwd='password')

产生一个错误:

pyodbc.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')

我发现这个错误语焉不详.现在,即使是缩小问题范围的建议也会有所帮助.

编辑:

token.c:328:tds_process_login_tokens()
util.c:331:tdserror(0x87bbeb8, 0x8861820, 20017, 115)
odbc.c:2270:msgno 20017 20003
util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:384:tdserror: returning TDS_INT_CANCEL(2)
util.c:156:Changed query state from IDLE to DEAD
token.c:337:looking for login token, got  0()
token.c:122:tds_process_default_tokens() marker is 0()
token.c:125:leaving tds_process_default_tokens() connection dead
login.c:466:login packet accepted
util.c:331:tdserror(0x87bbeb8, 0x8861820, 20002, 0)
odbc.c:2270:msgno 20002 20003
util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:384:tdserror: returning TDS_INT_CANCEL(2)
mem.c:615:tds_free_all_results()
error.c:412:odbc_errs_add: "Unable to connect to data source"

推荐答案

在几个小时的兜圈子之后,我发现我所缺少的只是

TDS_VERSION=8.0 在我的odbc.ini文件的DSN中.

我在别处指定了它,但显然它也需要在这里.

希望这能帮助其他可怜的人.

Database相关问答推荐

撤销语句释放类实例中可用的缓冲区

Postgresql 服务器:允许访问私有网络内的远程连接,而不是外部网络

如何在mongodb数据库中设置导入的CSV文件的字段之间的关系

Active Record - 获取数据库中的第二个、第三个.. 项(无 ID)

如何在 Angular 中使用 IndexedDB?

术语 SSTable 和 LSM Tree 有什么区别

哪个能够存储 1 亿条记录的嵌入式数据库具有高效的 C 或 C++ API

如何打印出 sequelize 实例的表名?

在不稳定的网络中保持分布式数据库同步

PHP + SQL Server - 如何设置连接字符集?

如何从 T-SQL 中的表中 Select 前 N 行?

如何在实体框架中使用字符串属性作为主键

Python中的内存数据库

数据库与平面文本文件:当性能不是问题时, Select 一个而不是另一个的一些技术原因是什么?

如何对彼此接近的纬度/经度点进行分组?

有哪些不同类型的索引,每种索引的好处是什么?

设计数据库来保存不同的元数据信息

For循环或数据库调用哪个更好?

数据库 - (行或记录、列或字段)?

以编程方式嵌入 Java h2 数据库