无法使用 PYODBC 连接到网络外部的远程 SQL 服务器



由于某种原因,我似乎无法连接到我们网络之外的任何SQL Server,但如果我通过VPN在网络内,则没有问题。我的代码是这样的本地连接:

sql = pyodbc.connect(
    'DRIVER={FreeTDS};'
    'SERVER=192.168.1.xxROA;'
    'DATABASE=RentalDB;'
    'UID=xxxxxxx;'
    'PWD=xxxxxxx'
)

和以下是我尝试远程:

sql = pyodbc.connect(
    'DRIVER={FreeTDS};'
    'SERVER=69.178.xx.xx/ROA;'
    'DATABASE=RentalDB;'
    'UID=xxxxxxxx;'
    'PWD=xxxxxxxx'
)

尝试连接时,大约15秒后抛出以下错误:

pyodbc。错误:('08001','[08001][unixODBC][FreeTDS][SQL Server]无法连接数据源(0)(SQLDriverConnect)')

我能够通过SQL Server Management Studio成功连接,我们有一个c#开发人员,建立连接没有问题,但由于某种原因,我不能。我正在运行Python 2.7, Debian 7, FreeTDS 0.91和PYODBC 3.0.7。我想SQL Server的版本是2012。什么好主意吗?

编辑:在远程连接上,我尝试了以下'SERVER='字符串:

69.178.xx.xx/ROA
69.178.xx.xxROA
mssql://69.178.xx.xx/ROA
mssql://69.178.xx.xxROA
69.178.xx.xx:1433/ROA
69.178.xx.xx:1433ROA
mssql://69.178.xx.xx:1433/ROA
mssql://69.178.xx.xx:1433ROA

并返回相同的错误

编辑2:固定了上面的端口号

我终于弄清楚了答案是什么(偶然的,同时试图解决连接到Azure上托管的SQL Server的故障)。PYODBC连接字符串,如果连接到SQL Server所在的网络之外,则需要一个端口号,而不是像其他SQL包那样使用默认值。只需将'PORT=1433;'添加到连接字符串中即可使连接正常工作。PYODBC似乎对何时使用和不使用默认端口进行连接很挑剔。

最新更新