与pypyodbc连接时“找不到指定的SQL Server”

时间:2013-06-06 18:34:40

标签: python sql-server

我有以下内容,要连接到SQL服务器。

conn = pypyodbc.connect("DRIVER={SQL Server};server='sqldev\\dwmaster',Database='risk',TrustedConnection=yes")
cur = conn.cursor()

但是,当我运行应用程序时,它会抛出错误

  

pypyodbc.DatabaseError:('08001','[08001] [Microsoft] [ODBC SQL Server   驱动程序] [DBNETLIB]找不到指定的SQL服务器。')

我可以从OSQL和SQLCMD访问SQLserver。

2 个答案:

答案 0 :(得分:0)

由于网络连接或命名实例,您遇到了问题。命名实例是'dwmaster'/服务器键/值的一部分。默认情况下,SQL在tcp 1433上,但命名实例可能不在该端口上,也可能在动态端口上。要获取端口,客户端会在UDP 1434上询问SQL Browser服务 - “DWMASTER实例的端口是什么?”

某些数据库提供程序不与sql浏览器交互以查找实例正在侦听的端口,因此您必须在连接字符串中指定它。您可能希望将命名实例设置为使用静态IP。

要排除命名实例的问题,您可以在服务器启动时查看sql管理日志中正在操作的端口。在连接字符串中指定端口号,这可能会起作用。您必须查阅您的pypy文档以了解如何指定端口。

如果您没有成功,则应测试与DNS名称和端口的连接。防火墙可能会阻止您的通信。您可以使用telnet,portqry或其他工具,具体取决于您的操作系统。 Ping不是有效的测试。如果您无法建立连接,则需要与服务器/网络支持部门联系。

Telnet测试到sql默认端口

telnet myserver -1433

测试sql浏览器

portqry -n server -p udp -e 1434

测试sql默认

portqry -n server -e 1433

答案 1 :(得分:0)

感谢Sam的建议。

最后,通过设置32位ODBC驱动程序而不是使用连接字符串来解决问题。