将数据库从"Azure sql 服务器"移动到"Azure SQL 托管实例"有哪些不同的选项,看起来以下选项是不可能的 1( Azure 迁移服务 - 不支持 Azure SQL 服务器作为源 2(bacpac 并使用 sqlpackage 导入,这不起作用并且没有结果
我看到的唯一选项是通过具有自承载集成运行时的 Azure 数据工厂
是否有更好的选择可以从"Azure SQL Server"移动到"Azure 托管实例">
最新版本的 SQLPackage 支持从多个 SQL 源(如 Azure SQL 数据库(迁移到 Azure SQL 托管实例 (MI(。
出口:
按照以下步骤,可以使用 SQLPackage 命令行实用工具导出 SQL 数据库。如果可能,请使用有权访问 Azure SQL 数据库和 MI 的工作站,以避免将导出的 bacpac 移动到有权访问目标 MI 的工作站。
-
下载并运行适用于 Windows 的 DacFramework.msi 安装程序。
-
打开一个新的命令提示符窗口,然后运行以下命令 cd C:\Program Files\Microsoft SQL Server\150\DAC\bin
-
执行以下命令,导出SQL数据库。 sqlpackage.exe/a:Export/SourceServerName:servername.database.windows.net/SourceDatabaseName:dbname/SourceUser:username/SourcePassword:password/TargetFile:C:\Users\user\Desktop\backup150.bacpac
在上面的命令中,我们将数据库"dbname"从服务器"服务器名称"导出到名为"backup150.bacpac"的本地文件。您需要调整这些值以匹配您的设置。
进口:
如果包含导出的 bacpac 文件的环境无权访问目标 MI,请将导出的 bacpac 文件"backup150.bacpac"移动到可以访问 Azure SQL MI 的环境。
按照以下步骤,可以使用相同的 SQLPackage 实用工具将 bacpac 导入到 Azure SQL 托管实例中进行导出。如果您已经从上面的导出中对当前环境完成了步骤 1 和 2,请跳到步骤 3 以运行导入。
-
下载并运行适用于 Windows 的 DacFramework.msi 安装程序。
-
打开一个新的命令提示符窗口,然后运行以下命令 cd C:\Program Files\Microsoft SQL Server\150\DAC\bin
-
运行以下命令以导入到托管实例 sqlpackage.exe/a:Import/TargetServerName:ManagedInstancename.appname.database.windows.net/TargetDatabaseName:dbname/TargetUser:username/TargetPassword:password/SourceFile:C:\Users\user\Desktop\backup150.bacpac
在上面的命令中,我们将数据库"dbname"从名为"backup150.bacpac"的bacpac导入到目标MI"ManagedInstancename"中。您需要调整这些值以匹配您的设置。
笔记。
请注意,比"18.0"更早的DACfx版本不支持迁移到Azure SQL托管实例,为了确保最新的兼容性,请确保使用的是最新版本的SQLPackage。使用旧版本可能会导致如下所示的错误:
导入数据库时出错:无法导入包。 无法连接到主服务器或目标服务器"数据库名称"。在主服务器或目标服务器中必须具有相同密码的用户。
或
导入数据库时出错:无法导入包。 警告 SQL0:将 Azure SQL 数据库 v12 指定Microsoft为目标平台的项目可能会遇到与 SQL Server 2014 的兼容性问题。 错误 SQL72014:.Net SqlClient 数据提供程序:消息 41918,级别 16,状态 1,第 2 行 SQL 数据库托管实例不支持在创建数据库语句中指定文件和文件组。 错误 SQL72045:脚本执行错误。 执行的脚本: