迁移 SQL 登录名和组

已完成

若要将 SQL Server 数据库无缝、安全地转换到 Azure SQL,必须理解并有效管理安全信息的迁移。

决定何时迁移 SQL 登录名和组

假设一个大型组织拥有大量本地 SQL Server 基础结构,为各个业务部门提供服务。 每个业务部门都有自己的 SQL 登录名、用户角色和权限,根据其特定需求定制。 该组织决定将这些数据库迁移到 Azure SQL 数据库,以利用云的可伸缩性优势。

在此方案中,在数据库迁移之前预先迁移登录名可能会给测试阶段带来不必要的复杂性。

在数据库迁移项目结束时迁移登录名有助于测试,尤其是在复杂方案中。 由于数据库架构不断变化,提前迁移登录名可能会导致测试延迟。 等待迁移登录名可使安全配置与最终结构保持一致,从而简化迁移过程,在数据保护需要依赖于表的安全性时尤其如此。

挑战 解释
复杂权限结构 稍后迁移登录名,就可以随着迁移过程中数据库结构的发展而调整权限。
测试延迟 提前迁移登录名可能会减慢测试速度,使安全验证与架构更改变得复杂。
依赖于表的安全性 延迟登录名迁移可以调整安全配置,使其与迁移过程中发生变化的最终数据库结构匹配。

在我们的方案中,此方法可以让你专注于确保安全措施与最终的数据库结构完全一致,减少潜在的复杂情况,并使迁移项目更易于管理。

使用 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、 PowerShellAzure CLI 的 Azure SQL 迁移扩展来启动登录迁移过程。

按照以下步骤在 Azure Data Studio 使用迁移扩展迁移登录名:

  1. 从 Azure Data Studio 启动 Azure SQL 迁移扩展,并启动 SQL Server 登录名迁移向导。

    显示 Azure Data Studio 中的新登录迁移选项的屏幕截图。

  2. 在“步骤 1:Azure SQL 目标”中,连接到 Azure SQL 目标。

  3. 在“步骤 2:选择要迁移的登录名”中,从源 SQL Server 实例中选择登录名。

  4. 在“步骤 3:迁移状态”中,监视登录迁移过程。 登录名迁移成功完成后(或者如果它出现故障),页面会显示相关更新。

    显示 Azure Data Studio 中的登录迁移状态的屏幕截图。

MoveLogins 脚本

MoveLogins 脚本有助于将登录信息从本地 SQL Server 传输到 Azure SQL 数据库或其他 PaaS 产品/服务。

MoveLogins 脚本为用户启用 Active Directory 查找,使你能够获取其用户主体名称(UPN)。

该脚本在 PowerShell 中编写,会生成一个可应用于目标 SQL 环境的 T-SQL 脚本,以传输登录名、数据库用户、角色和权限。 它不会在目标环境中执行命令。 在将生成的脚本输出应用到目标环境之前,需要仔细检查。

取决于使用的是 Azure SQL Database 还是 Azure SQL 托管实例,该脚本会生成不同的结果。 在 Azure SQL 数据库中,无法创建 Microsoft Entra 登录名和相关的数据库用户。Microsoft Entra 用户是在数据库级别创建的。 对于 Azure SQL 托管实例,它类似于具有服务器级登录名和数据库用户的本地 SQL Server。

注意

建议从使用专用迁移工具(如 Azure 迁移扩展)开始传输登录名。 如果使用这些推荐工具时遇到任何问题,可以考虑替代方法,例如使用 MoveLogins 脚本。