在与SQL DB连接时在jupyter上遇到以下代码的问题。
con = pyodbc.connect('Driver={ODBC Driver 13 for SQL
Server};Server='+server+';Database='+database+';Uid='+username+'
;Pwd='+passwor
d+';Encrypt=yes;TrustServerCertificate=no;Connection
Timeout=30;Authentication=ActiveDirectoryPassword')
Error Description Below:
OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 13 for SQL
Server]SSL Provider: [error:140A90F1:lib(20):func(169):reason(241)] (-1)
(SQLDriverConnect)')
答案 0 :(得分:0)
假设您使用的是Microsoft Azure Notebooks,我尝试成功重现您的问题,如下所示。
这是由您使用的连接字符串引起的。
在Azure门户上,您将看到三个ODBC连接字符串,如下图。
很明显,您正在尝试使用第二个,该第二个需要Azure Active Directory帐户的用户名和密码,如官方文档Using Azure Active Directory with the ODBC Driver
并且根据同一文档,ODBC驱动程序版本13.1似乎不支持这种身份验证方式,请更改为将ODBC驱动程序版本17与{ODBC Driver 17 for SQL Server}
一起使用。
首先,请检查已安装的msodbcsql17
。
但是,我尝试使用msodbcsql17
进行连接,但由于登录超时错误而失败。甚至我也尝试通过pyodbc
3.1.1
从4.0.26
升级到!pip install pyodbc --upgrade
因此,如果必须对SQL数据库连接的AAD进行身份验证,请尝试并可能获得成功的连接。或切换到第一种连接方式,使用SQL数据库用户名和密码通过pyodbc==3.1.1
(升级到4.0.26
会导致另一个错误)和{ODBC Driver 13 for SQL Server}
进行连接,它对我有用。 / p>
希望有帮助。