【发布时间】:2015-06-24 20:02:43
【问题描述】:
我正在尝试连接到在我的机器上运行的本地 SQL Server 实例。我可以从我们的服务器使用此代码连接到本地实例,但它在我的本地计算机上失败。
我在 SQL Server 配置中启用了命名管道和所有 ip。
我使用的代码如下:
from pymssql import connect
server = r'.\SQLEXPRESS2014' # I've also tried MORGANT-PC\SQLEXPRESS and SQLEXPRESS2014
username = 'MyUserName'
password = 'MyPassword'
master_database_name = 'SuperSecretDatabase'
port = 5000
server_args = {'host': server, 'user': username, 'password': password,
'database': master_database_name, 'port': port} # I've tried having the first key be both host and server, because pymssql's docs are unclear on the difference.
master_database = connect(**server_args)
如果我使用实例名称,我会收到此错误:
pymssql.InterfaceError: Connection to the database failed for an unknown reason.
我将端口设置为 5000,以便我可以尝试使用
连接它server = 127.0.0.1
port = 5000
失败并显示略有不同的错误消息:
pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist\nNet-Lib error during Unknown error (10035)\n')
我在这里阅读了很多关于 SO 的答案,其中大多数似乎表明这是 FreeTDS 的问题,但我使用的是 Windows 8.1,所以我没有 FreeTDS。
我尝试使用主机\实例名称与sqlcmd 连接,并且效果很好。它也适用于 SSMS。
我尝试将.\SQLEXPRESS2014 传递给pymssql.connect() 中的host 和server 参数,但它们都因上述相同的错误而失败。
我曾短暂尝试过使用adodbapi,但得到的错误消息完全相同。
【问题讨论】:
-
您的本地主机是命名实例吗?您的连接正在连接到一个命名实例。
-
是的。我不确定您甚至可以将 server 2014 安装为非命名实例。如果您查看问题,我也尝试使用 ip/port 连接。
标签: python sql-server windows python-3.x sql-server-2014