当前位置: 首页 > 面试题库 >

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

翟志新
2023-03-14
问题内容

由于某种原因,我似乎无法连接到网络之外的任何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:固定上面的端口号。


问题答案:

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



 类似资料:
  • 我们的组织有一个远程SQL数据库,我正试图使用PyODBC连接到该数据库。 下面是测试代码:- 但是,当我尝试使用PyODBC连接时,我无法连接并得到以下错误。 PyODBC.OperationalError:('08001','[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]SQL Server不存在或访问被拒绝.(17)(SQLDriverCo

  • 我正在使用dbeaver连接到远程mongodb服务器,这需要用户名和密码。我可以使用命令连接到它,但使用DBEAVER失败。 我试过所有这些凭据机制,但没有一个奏效。当我使用简单的机制时,它说 DBException:连接到Mongo实例[10.20.88.19]com.MongoDb.MongoMeoutException:MongoMeoutException:等待与ReadPreferen

  • 我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo

  • 问题内容: 我正在尝试使用jstatd用jps查询远程JVM,以便最终使用VisualVM对其进行监视。 我让jstatd使用以下安全策略运行: jstatd在带有1.6.0_10版本的HotSpot vm的64位Linux机器上运行。jstatd命令是: 我正在尝试从Windows 7计算机运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,这样jp

  • 当我试图将我的一台机器用作WinRM客户端以连接到另一台机器时,我的一台机器出现问题。场景是: Window 7上的问题机器(VM A)已经启用了WinRM(已经运行winrm快速配置,Enable-PSRemoting),然后我将远程机器(VM C)的IP添加到VM A的受信任主机中,然后运行Test-WSMan,我得到这个错误Test-WSMan: 客户端无法连接到请求中指定的目标。验证目标上