在Windows上使用PymSQL连接到SQL Server实例

2024-09-27 07:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pymssql(Python 2.7.1版本为2.0.0b1-dev-20111019)从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

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


顺便说一下,我读过“Unable to connect to SQL Server via pymssql”的回复。OP最终通过正确配置FreeTDS解决了这个问题,据我所知,pymssql在Windows上并不使用FreeTDS。


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


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

为了澄清,instance是安装SQL Server时提供的名称,而不是安装中的数据库。我突然想到pymssql可能不支持这种表示法,所以我将研究如何重新配置SQL Server实例,以便不需要它。


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


Tags: to实例instance版本sqlserverconnect错误
1条回答
网友
1楼 · 发布于 2024-09-27 07:27:01

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

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

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

host = 'IP'
port = 1219

相关问题 更多 >

    热门问题