將連線新增到 Azure SQL 資料庫
使用 Visual Studio 連線服務,您可以連線到 Azure SQL 資料庫、本機模擬器 (例如開發期間),或內部部署 SQL Server 資料庫。 若為內部部署 SQL Server,請參閱 [連線資料庫]。
使用 Visual Studio 時,您可以使用 [已連線的服務] 功能,從下列任何一個專案類型連線:
- ASP.NET Core
- .NET Core (包括主控台應用程式、WPF、Windows Forms、類別庫)
- .NET Core 背景工作角色
- Azure Functions
- .NET Framework 主控台應用程式
- ASP.NET 模型-視圖-控制程式 (MVC) (.NET Framework)
- 通用 Windows 平台應用程式
已連接服務功能會將所有必要的參考和連接程式碼新增到您的專案中,並適當地修改組態檔。
必要條件
- 已安裝 Azure 工作負載的 Visual Studio。
- 其中一種支援類型的專案
- Azure 帳戶。 如果您沒有 Azure 帳戶,請啟用適用於 Visual Studio 訂閱者的 Azure 權益或註冊免費試用。
使用連線服務來連線至 Azure SQL Database
在 Visual Studio 中,開啟您的專案。
在 [方案總管] 中,於 [已連線的服務] 節點上按一下滑鼠右鍵,然後從捷徑功能表中選取 [新增] 以開啟可用服務的功能表。
如果您沒看到 [已連接的服務] 節點,請選取 [專案]>[已連接的服務]>[新增]。
選擇 [SQL Server 資料庫]。 [連線到相依性] 頁面隨即出現。 您應該會看到數個選項:
- SQL Server Express LocalDB,這是與 Visual Studio 一起安裝的內建 SQL 資料庫供應項目
- 電腦上本機容器上的 SQL Server 資料庫
- SQL Server 資料庫,這是區域網路上的內部部署 SQL Server
- Azure SQL 資料庫,用作以 Azure 服務形式執行的 SQL 資料庫
您可以從本機資料庫開始,以降低成本並簡化早期開發。 您可以稍後移轉至 Azure 中的即時服務,方法是重複這些步驟並選擇另一個選項。 如果您在本機建立想要在 Azure 中重新建立的資料庫,則可在當時將資料庫移轉至 Azure。
如果您想要連線至 Azure 服務,請繼續下一個步驟,或如果您尚未登入,請先登入您的 Azure 帳戶,再繼續進行。 如果您沒有 Azure 帳戶,您可以註冊免費試用。
在 [設定 Azure SQL Database] 畫面中,選取現有的 Azure SQL Database,然後選取 [下一步]。
如果需要建立新的元件,請移至下一個步驟。 否則,請跳至步驟 7。
若要建立 Azure SQL Database:
選取綠色加號旁邊的 [新建]。
填寫 [Azure SQL Database: 新建] 畫面,然後選取 [建立]。
當 [設定 Azure SQL Database] 畫面顯示時,新的資料庫即會出現在清單中。 在清單中選取新的資料庫,然後選取 [下一步]。
輸入 連接字串 名稱,或選擇預設值,然後選擇 [其他設定]。
注意
透過 Visual Studio 2022 17.12 版和更新版本,此程式會使用 Microsoft Entra 受控識別,無密碼驗證方法,以連線到資料庫。 此畫面上的警告表示您必須在 Visual Studio 中完成此程式之後,於 Azure 入口網站中執行手動步驟。 請參閱 Microsoft Entra 驗證。
選擇您要將 連接字串 儲存在本機秘密檔案中,還是儲存在 Azure 金鑰保存庫,然後選擇 [下一步]。
[變更摘要] 畫面會顯示當您完成程序時,將會對專案進行的所有修改。 如果變更看起來正常,請選擇 [完成]。
如果系統提示您設定防火牆規則,請選擇 [是]。
在 [方案總管] 中,按兩下 [已連線的服務] 節點,以開啟 [已連線的服務] 索引標籤。=連線會出現在 [服務相依性] 區段底下:
如果您按一下您新增的相依性旁的三個點,您可以看到各種選項,例如 [連線] 以重新開啟精靈並變更連線。 您也可以按一下視窗右上方的三個點,以查看啟動本機相依性、變更設定等選項。
如果您使用受控識別 (Visual Studio 17.12 和更新版本),請參閱下一節來設定 Azure SQL 資料庫中的受控識別使用者。
Microsoft Entra 驗證
透過 Visual Studio 2022 17.12 版和更新版本,聯機的服務程式會使用 Microsoft Entra 驗證,這是最安全的驗證方法。 不過,Visual Studio 不會自動為您在 Azure SQL 資料庫上建立 Microsoft Entra 系統管理員使用者。 如果沒有Microsoft Entra 系統管理員用戶,連線將無法成功驗證。
您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來建立 Microsoft Entra 系統管理員使用者。 如需每個方法的詳細指示,請參閱 設定Microsoft Entra 系統管理員使用者。
完成連線服務程序之後,您必須建立對應至受控識別的SQL使用者,並在資料庫中執行 SQL 語句來設定許可權。 以您的Microsoft Entra 系統管理員使用者身分登入 Azure 入口網站中的查詢編輯器 ,然後執行如下的語句:
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];
GO
<identity-name>
是 entra 識別碼中Microsoft受控識別的名稱。 如果身分識別是由系統指派,則名稱一律與您 App Service 應用程式名稱相同。 對於部署位置,其系統指派的識別的名稱為 <app-name>/slots/<slot-name>
。 若要授與Microsoft Entra 群組的許可權,請改用群組的顯示名稱(例如 , myAzureSQLDBAccessGroup
。 請參閱 Azure SQL Microsoft Entra 中的受控識別類型和受控識別。 您新增的角色取決於您的使用案例。 請參閱 ALTER ROLE。
如果您的程式代碼參考 System.Data.SqlClient
,您必須升級至 Microsoft.Data.SqlClient
,因為 System.Data.SqlClient
不支援Microsoft Entra 驗證。 若要升級,請新增參考 Microsoft.Data.SqlClient NuGet 套件,並更新參考System.Data.SqlClient
Microsoft.Data.SqlClient
命名空間的任何 using 指示詞。 有一些行為變更;請參閱 移植速查表。
在 Visual Studio 中,開啟您的專案。
在 [方案總管] 中,於 [已連線的服務] 節點上按一下滑鼠右鍵,然後從捷徑功能表中選取 [新增] 以開啟可用服務的功能表。
如果您沒看到 [已連接的服務] 節點,請選取 [專案]>[已連接的服務]>[新增]。
選擇 [SQL Server 資料庫]。 [連線到相依性] 頁面隨即出現。 您應該會看到數個選項:
- SQL Server Express LocalDB,這是與 Visual Studio 一起安裝的內建 SQL 資料庫供應項目
- 電腦上本機容器上的 SQL Server 資料庫
- SQL Server 資料庫,這是區域網路上的內部部署 SQL Server
- Azure SQL 資料庫,用作以 Azure 服務形式執行的 SQL 資料庫
您可以從本機資料庫開始,以降低成本並簡化早期開發。 您可以稍後移轉至 Azure 中的即時服務,方法是重複這些步驟並選擇另一個選項。 如果您在本機建立想要在 Azure 中重新建立的資料庫,則可在當時將資料庫移轉至 Azure。
如果您想要連線至 Azure 服務,請繼續下一個步驟,或如果您尚未登入,請先登入您的 Azure 帳戶,再繼續進行。 如果您沒有 Azure 帳戶,您可以註冊免費試用。
在 [設定 Azure SQL Database] 畫面中,選取現有的 Azure SQL Database,然後選取 [下一步]。
如果需要建立新的元件,請移至下一個步驟。 否則,請跳至步驟 7。
若要建立 Azure SQL Database:
選取綠色加號旁邊的 [新建]。
填寫 [Azure SQL Database: 新建] 畫面,然後選取 [建立]。
當 [設定 Azure SQL Database] 畫面顯示時,新的資料庫即會出現在清單中。 在清單中選取新的資料庫,然後選取 [下一步]。
輸入連接字串名稱,或選擇預設值,然後選擇您要將連接字串儲存在本機秘密檔案中,還是 Azure Key Vault 中。
[變更摘要] 畫面會顯示當您完成程序時,將會對專案進行的所有修改。 如果變更看起來正常,請選擇 [完成]。
如果系統提示您設定防火牆規則,請選擇 [是]。
在 [方案總管] 中,按兩下 [已連線的服務] 節點,以開啟 [已連線的服務] 索引標籤。=連線會出現在 [服務相依性] 區段底下:
如果您按一下您新增的相依性旁的三個點,您可以看到各種選項,例如 [連線] 以重新開啟精靈並變更連線。 您也可以按一下視窗右上方的三個點,以查看啟動本機相依性、變更設定等選項。
存取連接字串
了解如何遵循在 ASP.NET Core 中進行開發時安全地儲存應用程式祕密來安全地儲存祕密。 特別是,若要從祕密存放區讀取連接字串,您可以新增程式碼,如透過設定 API 讀取祕密中所示。 另請參閱 .NET Core 中的相依性插入。
Entity Framework 移轉
在早期開發期間,使用本機資料存放區可能很方便,但有了 Entity Framework Core,當您準備好移至雲端時,可以使用 Visual Studio 對 Entity Framework 移轉的支援來移動資料庫,或使用遠端資料存放區合併變更。 請參閱移轉概觀。
在 [連線服務] 索引標籤上,您可以按一下三個點來尋找移轉命令,如螢幕擷取畫面所示:
您可以在那裡使用命令來建立新的移轉、直接套用這些移轉,或產生套用移轉的 SQL 指令碼。
新增移轉
引進資料模型變更時,您可以使用 Entity Framework Core 工具來新增對應移轉,在程式碼中描述將資料庫結構描述保持同步所需的更新。Entity Framework Core 會將目前的模型與舊模型的快照集進行比較以判斷差異,並產生移轉來源檔案。 這些檔案會新增至您的專案,通常是在稱為 Migrations 的資料夾中,而且可以像任何其他來源檔案一樣在專案的原始程式碼控制中進行追蹤。
當您選擇此選項時,系統會要求您提供內容類別名稱,代表您要移轉的資料庫結構描述。
更新資料庫
在建立了移轉之後,可將其套用至資料庫。 Entity Framework 會使用移轉程式碼中指定的變更來更新您的資料庫和結構描述。 當您選擇此選項時,系統會要求您提供內容類別名稱,代表您要移轉的資料庫結構描述。
產生 SQL 指令碼
將移轉部署至生產資料庫的建議方式,就是產生 SQL 指令碼。 此策略的優點如下:
- 您可以檢閱 SQL 指令碼是否正確;這樣做很重要,因為將結構描述變更套用至生產資料庫,這是可能涉及資料遺失的潛在危險作業。
- 在某些情況下,可以調整指令碼以符合生產資料庫的特定需求。
- SQL 指令碼可與部署技術搭配使用,甚至可以在 CI 過程中產生。
- SQL 指令碼可以提供給 DBA,而且可以分開管理和封存。
當您使用此選項時,系統會詢問您資料庫內容類別和指令檔檔案的位置。
在 SQL Server 物件總管中開啟
為了方便起見,此命令可讓您跳至 SQL Server 物件總管,以便您可以檢視資料表和其他資料庫實體,並直接使用您的資料。 請參閱物件總管。
下一步
您可以繼續 Azure SQL 資料庫的快速入門,但您可以在設定初始連線之後開始,而不是從頭開始。 如果使用 Entity Framework,您可以從新增程式碼以連線至 Azure SQL Database 開始。 如果使用 SqlClient
或 ADO.NET 資料類別,您可以從新增程式碼以連線至 Azure SQL Database 開始。
您的程式碼不會完全符合快速入門中所使用的程式碼,而這些快速入門會使用不同方式來取得連接字串。 連接字串是祕密,且會安全地儲存,如在 ASP.NET Core 中進行開發時安全地儲存應用程式祕密所述。 特別是,若要從祕密存放區讀取連接字串,您可以新增程式碼,如透過設定 API 讀取祕密中所示。
在 ASP.NET Core 專案中,連線服務所建立的連接設定或 連接字串 可在組態物件中使用。 您可以透過 WebApplicationBuilder
類別 (在許多專案範本中,則為 builder
) 上的屬性來存取此連接字串,如下列範例所示:
var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];
提供給 Configuration 屬性的字串應該符合您在連線服務程式中提供的 secrets.json 或 Azure 金鑰保存庫 索引鍵。 例如,使用Visual Studio 2022 17.12和更新版本時,連線設定會儲存在 secrets.json 中,如下所示:
{
"ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}
在 ASP.NET Core 專案中,連線服務所建立的連接設定或 連接字串 可在組態物件中使用。 您可以透過 WebApplicationBuilder
類別 (在許多專案範本中,則為 builder
) 上的屬性來存取此連接字串,如下列範例所示:
var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];