我试图从Windows窗口使用pymssql(版本2.0.0b1-dev-20111019与Python 2.7.1)连接到SQL Server实例。我试着从控制台最基本的做法:在Windows上使用pymssql连接到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解决了他的问题,从我所知道的情况来看,它并没有被Windows上的pymssql使用。
根据@cha0site的建议,我尝试过只使用主机名,而不是主机名和实例。这导致了相同的错误,但似乎需要更长的时间才能生成错误(尽管回溯仍指示相同的行)。我指定实例的原因是,除非指定实例,否则我无法使用SSMS进行连接,因此我认为这对其他连接是必需的。
现在我也试着pymssql.connect(host='servername', user='username', password='userpassword', database='instance')
具有相同的结果(基于@希德的评论)。基于pymssql documentation,我认为database
参数用于指定用户要连接的初始数据库,而不是实例。
只是为了澄清,“实例”是在安装SQL Server期间提供的名称,而不是该安装中的数据库。在我看来,有可能pymssql不支持这种表示法,所以我会考虑重新配置SQL Server实例,以便它不是必需的。
现在我已经重新安装了SQL Server的默认实例,而不是一个命名实例,这让我在不指定实例名称连接。 adodbapi
仍然有效(没有/instance
),但pymssql
仍然返回相同的错误。我也从新下载的档案库中删除并重新安装了pymssql
(仍然是相同的版本)。
我认为你需要传递'host'的主机名,而不是ADODB数据源。 – cha0site 2012-02-06 18:18:58
@ cha0site:这种情况下的“ADODB数据源”是主机名(加上实例)。 adodbapi允许您在该位置指定主机名或IP地址,而不是指定的数据源。 – Allan 2012-02-06 18:29:42
是的。我说你应该放弃这个实例并且只给它一个主机名。 – cha0site 2012-02-06 18:33:09