将“ Azure sql服务器”数据迁移到“ Azure托管实例”

时间:2020-02-03 23:41:57

标签: azure-sql-database azure-managed-database

将数据库从“ Azure sql服务器”移动到“ Azure sql受管实例”有哪些不同的选项,如下所示是不可能的:1)Azure迁移服务-不支持将azure sql服务器作为源2)bacpac和使用sqlpackage导入,这是行不通的,并且没有结果

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

从“ Azure sql server”迁移到“ Azure受管实例”是否有更好的选择

1 个答案:

答案 0 :(得分:0)

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

导出:

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

  1. Download并运行Windows版DacFramework.msi安装程序。

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

  3. 运行以下命令以导出SQL数据库: sqlpackage.exe / a:导出/ SourceServerName:服务器名称.database.windows.net / SourceDatabaseName:数据库名称/ SourceUser:用户名/ SourcePassword:密码/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. Download并运行Windows版DacFramework.msi安装程序。

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

  3. 运行以下命令以导入到托管实例中 sqlpackage.exe / a:导入/TargetServerName:ManagedInstancename.appname.database.windows.net / TargetDatabaseName:dbname / TargetUser:username / TargetPassword:password /SourceFile:C:\Users\user\Desktop\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:脚本执行错误。执行的脚本: