小编典典

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

sql

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

sql = pyodbc.connect(
    'DRIVER={FreeTDS};'
    'SERVER=192.168.1.xx\ROA;'
    '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.Error:(‘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.xx\ROA
mssql://69.178.xx.xx/ROA
mssql://69.178.xx.xx\ROA
69.178.xx.xx:1433/ROA
69.178.xx.xx:1433\ROA
mssql://69.178.xx.xx:1433/ROA
mssql://69.178.xx.xx:1433\ROA

他们都返回相同的错误。

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


阅读 212

收藏
2021-04-19

共1个答案

小编典典

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

2021-04-19