如何使用身份验证 = 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
设置 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