如何使用身份验证 = ActiveDirectoryInteractive 从 VBA 连接到 Azure SQL 数据库?

How do I connect to Azure SQL DB from VBA with Authentication = ActiveDirectoryInteractive?

设置 cnSQL = 新建 ADODB.Connection 'cnSQL.Open"ODBC;DRIVER=SQL Server; Authentication = ActiveDirectoryInteractive; Database=XXXXX; Data Source=XXXX.database.windows.net"

这应该能满足您的需求。

您必须为 SQL 服务器下载 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

如果您登录 https://portal.azure.com/ 然后打开您的天蓝色 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

另请注意,对于此方案,您还需要以下驱动程序:

所以在我的例子中,我使用了以下 vba 代码和来自 Azure 门户的复制粘贴 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