移轉 SQL 登入和群組
若要順暢且安全地將 SQL Server 資料庫轉換為 Azure SQL,務必要了解並有效地管理安全性資訊的移轉。
決定何時移轉 SQL 登入和群組
試想一個大型組織具有大量的內部部署 SQL Server 基礎結構為各個業務單位提供服務。 每個業務單位都有自己的一組 SQL 登入、使用者角色,以及為其特定需求自訂的權限。 組織決定將這些資料庫移轉至 Azure SQL Database,以利用雲端可擴縮性的優點。
在此案例中,在資料庫移轉之前,先移轉登入可能會對測試階段造成不必要的複雜度。
在資料庫移轉專案結束時移轉登入則有助於測試,特別是在複雜的案例中。 如果預先移轉登入,可能會導致測試延遲,因為資料庫結構不斷演進。 等候移轉登入可讓安全性設定與最終結構保持一致,簡化移轉流程,特別是當資料表相依安全性對資料保護很重要時。
挑戰 | 說明 |
---|---|
複雜的權限結構 | 稍後才移轉登入可讓您隨著資料庫結構在移轉期間的演進來調整權限。 |
測試延遲 | 提早移轉登入可能會使測試變慢,使安全性驗證與架構變更都很複雜。 |
資料表相依安全性 | 延遲登入移轉可調整安全性設定,以便在移轉期間變更時符合最終資料庫結構。 |
在我們的案例中,這種方法可讓您專注確保安全性措施與完成的資料庫結構完全對齊,以減少潛在的複雜性,並讓移轉專案更容易管理。
使用 Azure 移轉延伸模組
在移轉後工作中,您可以使用 Azure Data Studio 中的 Azure 移轉延伸模組,將登入和伺服器角色從內部部署 SQL Server 移轉至 Azure SQL 目標。 此登入移轉體驗會自動執行手動工作,例如同步處理登入與其對應的使用者對應,以及複寫伺服器權限和伺服器角色。
移轉延伸模組目前僅支援 Azure VM 目標上的 Azure SQL 受控執行個體或 SQL Server。
- Azure SQL 受控執行個體 - Windows 帳戶和 SQL 登入。
- Azure VM 上的 SQL Server -僅限 SQL 登入
如果您尚未完成資料庫移轉但並登入移轉流程已啟動,仍然會進行登入和伺服器角色的移轉,但不會正確執行登入/角色對應。 此登入移轉流程會自動執行手動工作,包括同步登入與其相關聯的使用者對應,以及複寫伺服器權限和角色。
您可以使用適用於 Azure Data Studio、PowerShell 或 Azure CLI 的 Azure SQL 移轉延伸模組來開始登入移轉流程。
請遵循下列步驟,使用 Azure Data Studio 中的移轉延伸模組來移轉登入:
從 Azure Data Studio 啟動 Azure SQL 移轉延伸模組,然後啟動 SQL Server 登入移轉精靈。
透過步驟 1: Azure SQL 目標,連線到您的Azure SQL 目標。
透過步驟 2: 選取要移轉的登入,從來源 SQL Server 執行個體選取您的登入。
透過步驟 3: 移轉狀態,監視登入移轉流程。 登入移轉成功完成後 (或如果移轉失敗),頁面會顯示相關的更新。
使用 DMA
在移轉登入的過程中,Data Migration Assistant 會將權限指派給目標 SQL Server 上的安全性實體,因為其存在於來源 SQL Server 上。 如果目標 SQL Server 上已有登入,Data Migration Assistant 只會移轉指派給安全性對象的權限,而不會重新建立整個登入。 如果目標伺服器上已有登入,Data Migration Assistant 會盡量將登入對應到資料庫使用者。
Data Migration Assistant 目前不支援:
- 與獨立安全性憑證相關聯的登入 (對應至憑證的登入)
- 獨立非對稱金鑰 (對應至非對稱金鑰的登入)
- 對應至認證的登入。
- 根據預設,Data Migration Assistant 會選取所有可供移轉的合格登入。 或者,您可以選擇性地選取要移轉的特定登入。
注意
雖然 Database Migration Assistant 是實用的工具,但建議您使用 Azure 資料庫移轉服務 進行大型移轉和增強的整體體驗,其可作為 Azure Data Studio 的 Azure SQL 移轉延伸模組 提供,或透過 Azure 入口網站 或透過 Azure PowerShell 和 Azure CLI。
MoveLogins 指令碼
MoveLogins 指令碼可協助將登入資訊從內部部署 SQL Server 傳輸到 Azure SQL Database 或其他 PaaS 供應專案。
雖然 Data Migration Assistant (DMA) 能夠傳輸安全性資訊,並執行完整的相依性圖形以確保正確傳輸權限,但 MoveLogins 指令碼會提供額外的選項。 它會為使用者啟用 Active Directory 查閱,讓您取得其使用者主體名稱 (UPN),這是 DMA 目前不支援的功能。
以 PowerShell 撰寫的指令碼會產生可套用至目標 SQL 環境的 T-SQL 指令碼,以傳輸登入、資料庫使用者、角色和權限。 它不會在目標環境上執行命令。 您必須仔細檢閱產生的指令碼輸出,再將它套用至目標環境。
指令碼會根據您使用的是 Azure SQL Database 還是 Azure SQL 受控執行個體,而產生不同的結果。 在 Azure SQL Database 中,您無法建立 Microsoft Entra 登入和相關的資料庫使用者;而是會在資料庫層面建立 Microsoft Entra 使用者。 Azure SQL 受控執行個體類似於具有伺服器層級登入和資料庫使用者的內部部署 SQL 伺服器。
注意
建議您從 Azure 移轉延伸模組之類的專用移轉工具開始傳送登入。 如果您在使用這些建議工具時遇到任何問題,可以考慮使用 MoveLogins 指令碼之類的替代方法。