我出于某种原因似乎无法连接到我们网络之外的任何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:修正了上述内容的端口号。
答案 0 :(得分:3)
我终于找到了答案(在尝试同时解决连接到Azure上托管的SQL Server时遇到的问题)。 PYODBC连接字符串,如果连接到SQL Server所在的网络外部,则需要端口号,而不是像其他SQL包一样使用默认值。只需将'PORT=1433;'
添加到连接字符串即可使连接正常工作。 PYODBC似乎很挑剔,并且不想使用默认端口进行连接。