无法在Windows 7上使用PYODBC连接远程MS SQL服务器

1 投票
1 回答
3545 浏览
提问于 2025-04-16 08:16

我在尝试连接我的服务器时遇到了一些问题。这个服务器是在我的网络上,但是在另一台电脑上,而我运行的程序是在另一台电脑上。我检查过,两台电脑在同一个域下。我的代码是用Python写的,使用PYODBC来建立连接。

连接的代码行如下:

connectLine = 'DRIVER={SQL Native Client};SERVER='+configValues['host']+';DATABASE='+configValues['db']+';UID='+configValues['user']+';PWD='+configValues['passwd']
db = pyodbc.connect(connectLine)

当服务器和程序在同一台电脑上时,这个连接是可以正常工作的,但当我尝试连接到实际的服务器时,就不行了。我在Windows SBS 2003上运行的是Microsoft SQL Express 2005,而运行程序的电脑是Windows 7,程序是用Python 2.7编写的。

这是程序的输出,我让它打印了连接的代码行。

DRIVER={SQL Native Client};SERVER=192.168.1.103\OSBORNE;DATABASE=vpmser;UID=massEmailer;PWD=cogbutfeswas5836;
Traceback (most recent call last):
File "E:\Mass Emailer\massEmailer.py", line 56, in <module>
db = pyodbc.connect(connectLine)
Error: ('08001', '[08001] [Microsoft][SQL Native Client]SQL Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].  (-1) (SQLDriverConnectW); [HYT00] [Microsoft][SQL Native Client]Login timeout expired (0); [08001] [Microsoft][SQL Native Client]An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (-1)')

1 个回答

0

一些可能的情况:

(1) 关于你连接字符串中的这一部分:SERVER=192.168.1.103\OSBORNE; ... 错误信息中有一句很明确的提示是 """Error Locating Server/Instance Specified"""

来自 connectionstrings.com 的一个提示:

"""你在使用 SQL Server 2005 Express 吗?别忘了服务器名称的格式是 Servername\SQLEXPRESS,你需要把 Servername 替换成安装 SQL Server 2005 Express 的电脑名称。"""

如果 OSBORNE 不是远程服务器的名称,那它是什么呢?你为什么要加一个 IP 地址?

也许你应该用 OSBORNE\SQLEXPRESS 而不是 192.168.1.103\OSBORNE

(2) 错误信息的最后提到 """连接到 SQL Server 2005 时,这个失败可能是因为默认设置下 SQL Server 不允许远程连接。""" ... 你检查过 (a) SQL Server Express 是否支持远程连接 (b) 它是否被配置为允许远程连接吗?

(3) 你能否通过 (a) 使用你正在用的用户名和密码远程登录到服务器 (b) 在客户端机器上运行一个查询工具,并使用 DSN 指向远程机器和数据库,来远程访问数据库?如果可以的话,连接参数和你在连接字符串中的有什么不同?

撰写回答