Python - Linux - 使用Windows凭证连接MS SQL - FreeTDS+UnixODBC + pyodbc或pymssql

6 投票
3 回答
4676 浏览
提问于 2025-04-15 23:06

看起来没有什么好的说明来设置这个东西。有没有人能提供一些好的指导?我对Linux不太熟悉,所以请多多包涵。我看到过另一篇相关的帖子,但没有真正的答案。

我遇到了一些问题。

  1. FreeTDS似乎没有“正常工作”。我在尝试连接时,使用“tsql”命令得到以下信息:“默认数据库被设置为databaseName,但连接服务器时出现问题”,但没有说明具体是什么问题。

    1. 当我尝试使用pyodbc连接时,出现的错误是:“pyodbc.Error: ('08S01', '[08S01] [unixODBC][FreeTDS][SQL Server]无法连接:自适应服务器不可用或不存在 (20009) (SQLDriverConnectW)')”

    2. 我用pymssql尝试了类似的操作,但遇到了类似的问题。我一直收到无法连接的错误,但没有告诉我原因。

3 个回答

0

这个错误提示说明TDS版本没有设置正确。你可以在FreeTDS的配置设置里调整这个版本。你没有提到你使用的是哪个MSSQL版本。不过,如果你用的是2005版本的话,把TDS版本设置为8.0就可以了。

1

在构建 FreeTDS 的时候(你可以在这里找到相关信息:http://www.freetds.org/userguide/config.htm):

./configure --with-tdsver=8.0 --enable-msdblib
2

下面的内容适用于当你设置MS SQL服务器允许远程TCP/IP连接,并且有一个合适的用户可以用来连接时。

你还需要注意正确设置数据库的主机名,这个主机名是MS SQL提供的。

import pymssql
connection = pymssql.connect(
            user = 'username', 
            password = 'password', 
            host = 'server', 
            database = 'database',
        )
cursor = connection.cursor()
cursor.execute('select * from db;')
rows = cursor.fetchall()

撰写回答