8

我正在尝试使用 pymssql(版本 2.0.0b1-dev-20111019 和 Python 2.7.1)从 Windows 机器连接到 SQL Server 实例。我从控制台尝试了最基本的方法:

import pymssql
c = pymssql.connect(host = r'servername\instance',
                    user = 'username',
                    password = 'userpassword')

作为对此的回应,我得到了一个非常有用的错误:InterfaceError: Connection to the database failed for an unknown reason.

我有理由相信连接信息是正确的,因为它在我使用 adodbapi 时工作,使用以下命令:

import adodbapi
c = adodbapi.connect(r'Provider=sqloledb;Data Source=servername\instance;User ID=username;password=userpassword;'
c.close

我尝试将端口号添加到主机参数,结果相同。有没有人对如何解决这个问题有建议?


顺便说一句,我已经阅读了“无法通过 pymssql 连接到 SQL Server ”的回复。OP 最终通过正确配置 FreeTDS 解决了他的问题,据我所知,Windows 上的 pymssql 不使用它。


根据@cha0site 的建议,我尝试只使用主机名,而不是主机名和实例。这导致了相同的错误,但生成错误似乎需要更长的时间(尽管回溯仍然指示同一行)。我一直指定实例的原因是除非我指定实例,否则我无法使用 SSMS 进行连接,因此我认为其他连接是必需的。


我现在也尝试pymssql.connect(host='servername', user='username', password='userpassword', database='instance')了相同的结果(基于@Sid 的评论)。根据pymssql 文档,我相信该database参数用于指定用户要连接的初始数据库,而不是实例。

澄清一下,“实例”是安装 SQL Server 期间提供的名称,而不是安装中的数据库。我突然想到 pymssql 可能不支持这种表示法,因此我将考虑重新配置 SQL Server 实例,以便不需要它。


我现在将 SQL Server 重新安装为默认实例,而不是命名实例,这样我就可以在不指定实例名称的情况下进行连接。adodbapi仍然有效(没有/instance),但pymssql仍然返回相同的错误。我还pymssql从新下载的存档中删除并重新安装(仍然是相同的版本)。

4

2 回答 2

0

检查你的 freetds.conf 文件,看看你是否设置了端口1219。然后再次检查连接:

DB = pymssql.connect(host='DB',user='youruser',password='yourpwd',database='yourDBname')

编辑:我的 freetds.conf 文件 Python 示例:

host = 'IP'
port = 1219
于 2012-04-12T10:44:14.370 回答
0

要指定host=servername\instanceserver=servername\instanceSQL Server Browser服务必须在 SQL Server 计算机上。

于 2020-12-20T03:24:46.500 回答