如何使用 Authentication = ActiveDirectoryInteractive 从 VBA 连接到 Azure SQL DB?

Posted

技术标签:

【中文标题】如何使用 Authentication = ActiveDirectoryInteractive 从 VBA 连接到 Azure SQL DB?【英文标题】:How do I connect to Azure SQL DB from VBA with Authentication = ActiveDirectoryInteractive? 【发布时间】:2019-10-03 06:31:37 【问题描述】:

设置 cnSQL = New ADODB.Connection 'cnSQL.Open "ODBC;DRIVER=SQL Server;身份验证=ActiveDirectoryInteractive;数据库=XXXXX;数据源=XXXX.database.windows.net"

【问题讨论】:

【参考方案1】:

这应该可以满足您的需求。

您必须下载适用于 SQL Server 的 ODBC 驱动程序 17,并且根据您的连接类型,您可以更新身份验证选项

Sub AdoOdbcExample()    
    Dim con As Object    
    Set con = CreateObject("ADODB.Connection") 
    con.Open _
            "Driver=ODBC Driver 17 for SQL Server;" & _
            "Server=tcp:yourserver.database.windows.net,1433;" & _
            "Database=yourdb;" & _
            "Trusted_Connection=no;" & _
            "Authentication=ActiveDirectoryInteractive;" & _
            "UID=youremail;"
    con.Execute "UPDATE Clients SET FirstName='Gord' WHERE ID=5;"    
    con.Close    
    Set con = Nothing   
    'Authentication=ActiveDirectoryIntegrated
    'Authentication=ActiveDirectoryInteractive
    'ActiveDirectoryPassword  

End Sub

【讨论】:

【参考方案2】:

如果您登录到https://portal.azure.com/,然后打开您的 azure sql 数据库 - 而不是服务器,您可以在“设置”下为各种数据库连接(如 odbc)找到预配置的连接字符串:

ODBC:

ODBC(包括 Node.js)(SQL 身份验证) Driver=ODBC Driver 17 for SQL Server;Server=tcp:yourserver.database.windows.net,1433;Database=yourdb;Uid=yoursqluser;Pwd=your_password_here;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30; ODBC(包括 Node.js)(Azure Active Directory 密码身份验证) Driver=ODBC Driver 17 for SQL Server;Server=tcp:yourserver.database.windows.net,1433;Database=yourdb;Uid=your_user_name;Pwd=your_password_here;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword ODBC(包括 Node.js)(Azure Active Directory 集成身份验证) Driver=ODBC Driver 17 for SQL Server;Server=tcp:yourserver.database.windows.net,1433;Database=yourdb;Uid=your_user_name;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryIntegrated

另请注意,对于这种情况,您还需要以下驱动程序:

Download ODBC driver 17 for SQL server

所以在我的例子中,我使用了以下 vba 代码和来自天蓝色门户的复制粘贴 odbc 连接字符串(SQL 身份验证)。

con.ConnectionString = "Driver=ODBC Driver 17 for SQL Server;Server=tcp:yourserver.database.windows.net,1433;Database=yourdb;Uid=yoursqluser;Pwd=your_password_here;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
con.Open

【讨论】:

以上是关于如何使用 Authentication = ActiveDirectoryInteractive 从 VBA 连接到 Azure SQL DB?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GraphQL 自定义的 Authentication 类?

添加审批意见

如何使用 GIDSignIn 或 GIDAuthentication 刷新 authentication.idToken?

如何使用 powershell 设置 IIS 的表单身份验证(system.web/authentication)的 overrideMode?

如何使用 Thymeleaf 配置 Spring Boot 并使用 sec:authentication 标签

如何使用 Authentication = ActiveDirectoryInteractive 从 VBA 连接到 Azure SQL DB?