1

将数据库从“Azure sql server”移动到“Azure sql 托管实例”有哪些不同的选项,看起来下面的选项是不可能的 1) Azure 迁移服务 - 不支持 azure sql server 作为源 2) bacpac 并使用 sqlpackage 导入,这不起作用并且没有结果

我看到的唯一选择是通过带有自托管集成运行时的 Azure 数据工厂

有没有更好的选择从“Azure sql server”迁移到“Azure 托管实例”

4

1 回答 1

1

最新版本的 SQLPackage 支持从多个 SQL 源(例如 Azure SQL 数据库)迁移到 Azure SQL 托管实例 (MI)。

出口:

按照以下步骤,您可以使用SQLPackage命令行实用程序导出 SQL 数据库。如果可能,请使用有权访问 Azure SQL 数据库和 MI 的工作站,以避免将导出的 bacpac 移动到有权访问目标 MI 的工作站。

  1. 下载并运行适用于 Windows 的 DacFramework.msi 安装程序。

  2. 打开一个新的命令提示符窗口,然后运行以下命令 cd C:\Program Files\Microsoft SQL Server\150\DAC\bin

  3. 运行以下命令导出 SQL 数据库: sqlpackage.exe /a:Export /SourceServerName:servername.database.windows.net /SourceDatabaseName:dbname /SourceUser:username /SourcePassword:password /TargetFile:C:\Users\user\Desktop \backup150.bacpac

在上面的命令中,我们将数据库“dbname”从服务器“servername”导出到名为“backup150.bacpac”的本地文件。您将需要调整这些值以匹配您的设置。

进口:

如果包含导出的 bacpac 文件的环境无权访问目标 MI,请将导出的 bacpac 文件“backup150.bacpac”移动到可以访问 Azure SQL MI 的环境中。

按照以下步骤,您可以使用相同的 SQLPackage 实用程序将 bacpac 导入 Azure SQL 托管实例以进行导出。如果您已经通过上面的导出在当前环境中完成了第 1 步和第 2 步,请跳到第 3 步运行导入。

  1. 下载并运行适用于 Windows 的 DacFramework.msi 安装程序。

  2. 打开一个新的命令提示符窗口,然后运行以下命令 cd C:\Program Files\Microsoft SQL Server\150\DAC\bin

  3. 运行以下命令导入托管实例 sqlpackage.exe /a:Import /TargetServerName:ManagedInstancename.appname.database.windows.net /TargetDatabaseName:dbname /TargetUser:username /TargetPassword:password /SourceFile:C:\Users\user \桌面\backup150.bacpac

在上面的命令中,我们将从名为“backup150.bacpac”的 bacpac 导入数据库“dbname”到您的目标 MI“ManagedInstancename”。您将需要调整这些值以匹配您的设置。

笔记。

请注意,早于“18.0”的 DACfx 版本不支持迁移到 Azure SQL 托管实例,为确保最新兼容性,请确保您使用的是最新版本的 SQLPackage。使用旧版本可能会导致如下所示的错误:

*** 导入数据库时​​出错:无法导入包。无法连接到主服务器或目标服务器“数据库名称”。您必须在主服务器或目标服务器中拥有具有相同密码的用户。

或者

*** 导入数据库时​​出错:无法导入包。警告 SQL0:将 Microsoft Azure SQL 数据库 v12 指定为目标平台的项目可能会遇到与 SQL Server 2014 的兼容性问题。错误 SQL72014:.Net SqlClient 数据提供程序:消息 41918,级别 16,状态 1,行 2 指定文件和文件组SQL 数据库托管实例不支持 CREATE DATABASE 语句。错误 SQL72045:脚本执行错误。执行的脚本:

于 2020-02-04T02:05:33.900 回答