我使用以下代码连接到使用Active Directory集成身份验证的SQL Azure DB。
private string GenerateConnectionString(string databaseName, string serverName)
{
SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder();
sqlConnectionBuilder.DataSource = string.Format(
"tcp:{0}.database.windows.net",
serverName);
connBuilder.InitialCatalog = databaseName;
connBuilder.Authentication = SqlAuthenticationMethod.ActiveDirectoryIntegrated;
connBuilder.ConnectTimeout = 30;
return connBuilder.ConnectionString;
}
身份验证从Active Directory集成身份验证更改为Active Directory通用身份验证,以支持多因素身份验证。
我看到了枚举
System.Data.SqlClient.SqlAuthenticationMethod
没有Active Directory通用身份验证的值。是否仍然可以使用System.Data.SqlClient
连接到数据库?如果是,那是什么
我必须在代码中做的改变?
答案 0 :(得分:2)
自.NET Framework 4.7.2以来,ActiveDirectoryInteractive身份验证方法可用。不确定它是否与" Universal"相同。或不。
答案 1 :(得分:0)
从2020年8月开始,有一种更好的方法可以连接到Azure SQL DB或Azure Synapse DW(SQL池)。通过使用MSOLEDBSQL driver(可以与应用程序一起重新分发),您的应用程序可以使用普通的System.Data.OleDb对象执行交互式/ MFA身份验证:
using System.Data.OleDb;
...
OleDbConnection con = new OleDbConnection("Provider=MSOLEDBSQL;Data Source=sqlserver.database.windows.net;User ID=user@domain.com;Initial Catalog=database;Authentication=ActiveDirectoryInteractive");
实际上,这是建议以编程方式连接到任何Microsoft SQL产品的方法,因为已经不推荐使用SQLOLEDB和SQLNCLI(也称为“ SNAC”)。