server = 'tcp:myserver.database.windows.net'. # fabric lakehouse sqlendpoint
database = 'mydb'
username = 'myusername'
pass1 = 'xxxx'
auth = 'ActiveDirectoryPassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Authentication='+auth+';UID='+username+';PWD='+pass1+';ENCRYPT=yes;Trusted_Connection=yes')
cursor = cnxn.cursor()
“操作错误:('08001','[08001] [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 17]命名管道提供程序:无法打开与 SQL Server [53] 的连接。(53) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0)“
任何帮助将不胜感激。
OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [53]. (53) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0)
当网络不允许连接到服务器时,您可能会收到上述错误。确保您的网络允许连接服务器。根据MS文档
仅支持 Microsoft Entra 多重身份验证 (MFA)。
因此,当您连接到服务器时,请使用
ActiveDirectoryInteractive
选项而不是 ActiveDirectoryPassword
进行身份验证,如以下代码中所述:
import pyodbc
server = 'tcp:<serverName>.database.windows.net' # fabric lakehouse sqlendpoint
database = '<dbName>'
username = '<v-id>'
auth = 'ActiveDirectoryInteractive'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Authentication='+auth+';UID='+username+';ENCRYPT=yes;')
cursor = cnxn.cursor()
运行上述代码时,会打开新窗口进行身份验证,完成身份验证后即可连接成功,如下所示:
更多信息可以参考MS文档。