pyodbc.OperationalError:SQL Server不存在或访问被拒绝。(17) (SQLDriverConnect);[08001]ODBC SQL Server驱动程序][

2024-09-27 00:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我整天都在网上搜索,尝试了很多解决方案,但没有一个有效。我可以手动连接到此服务器,但不能使用Python。我收到以下错误:

pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (5); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')

我尝试了以下方法:

  • (A)

    cnx = pyodbc.connect(Driver='{SQL Server}',
                         SERVER=self.DBserver,
                         DATABASE=xyz,
                         username=self.DBusername,
                         password=self.DBpassword,
                         PORT = 1433)
    
  • (B)

    cnx = pyodbc.connect('''Driver={SQL Server}; 
                         SERVER=tcp:<self.DBserver>; 
                         PORT=self.DBPort; DATABASE=xyz; 
                         UID=self.DBusername; 
                         PWD=self.DBpassword''')
    
  • (C)

    cnx = = pyodbc.connect(Driver='{SQL Server}',
                           SERVER=self.DBserver,
                           DATABASE=xyz,
                           UID=self.DBusername,
                           PWD=self.DBpassword)
    

Tags: selfsqlserverdriverconnectdatabasemicrosoftodbc
3条回答

我猜你需要更像这样的东西:

cnx = pyodbc.connect('DRIVER={SQL Server};SERVER='+self.DBserver+';DATABASE=xyz;UID='+self.DBusername+';PWD='+self.DBpassword)

当通过VPN连接并在Windows Subsystem for Linux中运行时,尝试使用pyodbc(4.0.30)连接到Azure SQL Server时,我遇到相同的错误:

with pyodbc.connect(db_connect_string) as conn:
OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x274C (10060) (SQLDriverConnect)')

Python代码在WSL(5.10.16.3-microsoft-standard-WSL2)/Ubuntu 20.04.3中运行,openssl version显示:OpenSSL 1.1.1k 2021年3月25日

我可以通过以下方式使用相同的凭据成功连接:

  • MS Data Studio与VPN
  • 使用VPN的Powershell中的相同Python/pyodbc代码
  • 在没有VPN的WSL中使用相同的Python/pyodbc代码(加上添加防火墙规则)

我猜OpenSSL和我们的[VPN]之间一定存在一些交互,可能与这些问题有关

问题在于防火墙。它正在工作

相关问题 更多 >

    热门问题