共用方式為


連線到採用 Microsoft Entra 多重要素驗證的 Azure SQL 資料庫

適用於:Fabric 中的 Azure SQL 資料庫 SQL 資料庫

本文提供連線到 Azure SQL 資料庫的 C# 程式。 此程式使用互動式模式驗證,支援使用 Microsoft Entra ID (先前稱為 Azure Active Directory) 進行多重要素驗證

如需 SQL 工具支援的多重要素驗證的相關資訊,請參閱使用 Microsoft Entra 多重要素驗證

注意

Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。

Azure SQL 資料庫的多重要素驗證

Active Directory Interactive 驗證支援使用 Microsoft.Data.SqlClient 連線至 Azure SQL 資料來源的多重要素驗證。 在用戶端 C# 程式中,列舉值會指示系統使用支援多重要素驗證的 Microsoft Entra 互動模式,以連線至 Azure SQL 資料庫。 執行程式的使用者將看到下列對話框:

  • 其中會顯示 Microsoft Entra 使用者名稱並要求提供使用者密碼。

    如果使用者的網域與 Microsoft Entra ID 同盟,則對話框不會顯示,因為無需輸入密碼。

    如果 Microsoft Entra 原則要求對使用者施加多重要素驗證,會顯示帳戶登入對話框。

  • 當使用者第一次進行多重要素驗證時,系統會顯示一個對話框,要求輸入行動電話號碼以傳送簡訊。 每則訊息都會提供驗證碼,使用者必須將其輸入到下一個對話框中。

  • 這個對話框會要求輸入系統傳送到行動電話的多重要素驗證的驗證碼。

如需如何設定 Microsoft Entra ID 以要求進行多重要素驗證的資訊,請參閱開始在雲端使用 Microsoft Entra 多重要素驗證

如需這些對話框的螢幕擷取畫面,請參閱使用 Microsoft Entra 多重要素驗證

提示

可以使用 .NET API 瀏覽器工具頁面搜尋 .NET Framework API。

也可以使用 optional ?term=<search value> 參數直接搜尋

先決條件

開始之前,您應該已經建立邏輯 SQL 伺服器,並且其可供使用。

為伺服器設定 Microsoft Entra 管理員

若要執行 C# 範例,邏輯伺服器管理員必須從伺服器的 Microsoft Entra ID 指派 Microsoft Entra 管理員。

在 Azure 入口網站的 [SQL Server] 頁面,從資源功能表中選取 [Microsoft Entra ID],然後選取 [設定管理員]

如需 Azure SQL 資料庫的 Microsoft Entra 管理員和使用者相關詳情,請參閱使用 SQL Database 設定和管理 Microsoft Entra 驗證中的螢幕擷取畫面。

Microsoft.Data.SqlClient

C# 範例依賴 Microsoft.Data.SqlClient 命名空間。 如需詳細資訊,請參閱對 SqlClient 使用 Microsoft Entra 驗證

注意

System.Data.SqlClient 使用 Azure Active Directory 驗證程式庫 (ADAL),其即將淘汰。 如果使用 System.Data.SqlClient 命名空間進行 Microsoft Entra 驗證,請將應用程式移轉至 Microsoft.Data.SqlClientMicrosoft Authentication Library (MSAL)。 如需搭配 SqlClient 使用 Microsoft Entra 驗證的詳細資訊,請參閱搭配 SqlClient 使用 Microsoft Entra 驗證

使用 SQL Server Management Studio 驗證

執行 C# 範例之前,最好先檢查 SQL Server Management Studio (SSMS) 中的設定和組態是否正確。 任何 C# 程式故障都可以縮小到原始程式碼。

驗證伺服器層級防火牆的 IP 位址

從計劃執行 C# 範例的同一建築物中的同一台電腦執行 SSMS。 在此測試中,可以使用任意驗證模式。 如果有任何跡象表明伺服器不接受您的 IP 位址,請參閱伺服器層級和資料庫層級的防火牆規則以取得協助。

驗證 Microsoft Entra 多重要素驗證

再次執行 SSMS,這次 [驗證] 設定為 [Azure Active Directory - 與 MFA 通用]。 此選項需要 SSMS 18.6 或更高版本。

如需詳細資訊,請參閱使用 Microsoft Entra 多重要素驗證

注意

對於 18.x 之前的 SSMS 版本,來賓使用者必須提供資料庫的 Microsoft Entra 網域名稱或租用戶 ID:選取 [選項] > [AD 網域名稱或租用戶 ID]。 SSMS 18.x 和更高版本可自動辨識租用戶。

若要在 Azure 入口網站中查找網域名稱,請選取 [Microsoft Entra ID] > [自訂網域名稱]。 在 C# 範例程式中,並非必須提供網域名稱。

C# 程式碼範例

注意

使用 .NET Core 時,可以使用 Microsoft.Data.SqlClient 命名空間。 如需詳細資訊,請參閱下列部落格

這是 C# 原始程式碼的一個範例。


using System;
using Microsoft.Data.SqlClient;

public class Program
{
    public static void Main(string[] args)
    {
        // Use your own server, database, and user ID.
        // Connetion string - user ID is not provided and is asked interactively.
        string ConnectionString = @"Server=<your server>.database.windows.net; Authentication=Active Directory Interactive; Database=<your database>";


        using (SqlConnection conn = new SqlConnection(ConnectionString))

        {
            conn.Open();
            Console.WriteLine("ConnectionString2 succeeded.");
            using (var cmd = new SqlCommand("SELECT @@Version", conn))
            {
                Console.WriteLine("select @@version");
                var result = cmd.ExecuteScalar();
                Console.WriteLine(result.ToString());
            }

        }
        Console.ReadKey();

    }
}

 

這是 C# 測試輸出的一個範例。

ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
   ...

下一步