在Python中,是否可以使用Active Directory密码验证连接Azure SQL Server



我曾尝试使用pyodbc库连接sql server

driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+host+';PORT=1443;DATABASE='+database+';UID='+user+';PWD='+ password+';Authentication=ActiveDirectoryPassword')

在上面的代码中,我选择了ActiveDirectoryPassword(AAD)作为我的身份验证类型,因为我只能访问AAD。但是收到以下错误消息。

InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

当我将驱动程序更改为ODBC驱动程序13时,得到不同的错误消息。

driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+host+';PORT=1443;DATABASE='+database+';UID='+user+';PWD='+ password+';Authentication=ActiveDirectoryPassword')

这一次我收到了以下错误消息。

OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 13 for SQL Server]SQL Server Network Interfaces: The Microsoft Online Services Sign-In Assistant could not be found. Install it from http://go.microsoft.com/fwlink/?LinkId=234947. If it is already present, repair the installation. [2].  (2) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 13 for SQL Server]Client unable to establish connection (2); [08001] [Microsoft][ODBC Driver 13 for SQL Server]Invalid connection string attribute (0)')

是否可以使用带有AAD身份验证的pyodbc连接azure sql server?如果可能的话,用AAD验证sql server的正确方法是什么?

首先,根据官方文档Use Azure Active Directory Authentication for authentication with SQLAdditional considerations小节,如下所示,pyodbc可以通过AAD身份验证连接Azure SQL数据库。

ODBC 13.1版支持Azure Active Directory身份验证,但是bcp.exe无法使用Azure Active Directory验证进行连接,因为它使用了较旧的ODBC提供程序。

然后,有一个SQL ServerUsing Azure Active Directory with the ODBC Driver的官方文档介绍了如何使用以及一些限制(如果不在Windows上)。

版本为13.1或更高版本的Microsoft ODBC驱动程序允许ODBC应用程序使用Azure Active Directory中的联合身份、用户名/密码、Azure Active Directory访问令牌或Windows集成身份验证(仅限Windows驱动程序)连接到SQL Azure实例。对于ODBC驱动程序13.1版,Azure Active Directory访问令牌身份验证仅适用于Windows。ODBC驱动程序版本17及更高版本支持跨所有平台(Windows、Linux和Mac)进行此身份验证。

还有

通过使用新的DSN和连接字符串关键字以及连接属性来完成。

您需要按照文档配置一些设置以启用新的DSN,然后使用连接字符串连接SQL Azure。

Driver={ODBC Driver 13 for SQL Server};Server={server};UID=myuser;PWD=myPass;Authentication=ActiveDirectoryPassword

注意这一点。

若要使用Azure Active Directory帐户用户名和密码进行连接,请在连接字符串中指定Authentication=ActiveDirectoryPassword,并分别使用用户名和密码指定UIDPWD

同时,与其他资源一样,这些资源似乎很旧,但有一个博客详细介绍了SQL Azure中的Multi-Factor Authentication配置,以及一个针对Connecting to SQL Database By Using Azure Active Directory Authentication的降价文档。

此外,对于Linux和Mac,有一个博客申请了另一个解决方案,这可能有助于建立SQL Server的连接。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新