Как открыть соединение System.Data.SQLClient.SQLC с универсальной аутентификацией Active Directory
Я использовал приведенный ниже код для подключения к базе данных SQL Azure, которая использовала встроенную проверку подлинности Active Directory.
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
подключиться к БД? Если да, что мне нужно изменить в коде?
1 ответ
ActiveDirectoryInteractive метод аутентификации доступен начиная с.NET Framework 4.7.2. Не уверен, что он такой же, как "Универсальный" или нет.
По состоянию на август 2020 года появился лучший способ подключения к базе данных Azure SQL или Azure Synapse DW (пулы SQL). Используя драйвер MSOLEDBSQL (который вы можете распространять вместе с вашим приложением), ваше приложение может выполнять интерактивную аутентификацию / аутентификацию MFA с использованием обычных объектов System.Data.OleDb:
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") устарели.