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

2023-11-25

我尝试使用 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 Driver 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)')

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


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

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

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

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

And it

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

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

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

并注意这一点。

要使用 Azure Active Directory 帐户用户名和密码进行连接,请指定身份验证=ActiveDirectory 密码在连接字符串和UID and PWD分别包含用户名和密码的关键字。

同时,与其他资源一样,这些似乎很旧,但blog详细介绍了 SQL Azure 中的配置多重身份验证,并介绍了一个 Markdown 文档Connecting to SQL Database By Using Azure Active Directory Authentication.

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

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中,是否可以使用Active Directory密码身份验证连接Azure SQL Server? 的相关文章

随机推荐