如何用Azure Admin和SSMS跨Azure服务器复制数据库数据且保留架构?
将Azure测试数据库数据复制到开发数据库(保留开发库架构)
方法一:使用SSMS导入导出向导(推荐,适配全量/增量数据复制)
步骤1:启动向导
打开SSMS并连接到测试服务器,右键点击目标测试数据库 → 任务 → 导出数据,在弹出窗口点击「下一步」。
步骤2:配置数据源
- 数据源选择「SQL Server Native Client 11.0」(或对应版本)
- 服务器名称填写测试服务器完整地址(如
test-server.database.windows.net) - 身份验证选「SQL Server身份验证」,输入测试服务器管理员账号和密码
- 数据库选择测试库,点击「下一步」
步骤3:配置目标(开发数据库)
- 目标选择「SQL Server Native Client 11.0」
- 服务器名称填写开发服务器完整地址(如
dev-server.database.windows.net) - 身份验证选「SQL Server身份验证」,输入开发服务器管理员账号和密码
- 数据库选择已有的开发库,点击「下一步」
步骤4:指定复制规则
- 选择「复制一个或多个表或视图的数据」,点击「下一步」
- 勾选需要复制数据的表,点击每个表的「编辑映射」:
- 确认目标为开发库中已存在的对应表
- 取消勾选「创建目标表」选项,确保仅复制数据不修改架构
- 完成映射配置后点击「下一步」
步骤5:执行复制
- 选择「立即运行」,点击「下一步」
- 确认所有设置无误后点击「完成」,等待任务执行完成并检查结果
方法二:使用T-SQL批量插入(适合自定义筛选/增量复制)
步骤1:创建链接服务器(跨服务器查询用)
连接到开发服务器,执行以下脚本(替换占位符为实际信息):
-- 创建链接到测试服务器的服务器 EXEC sp_addlinkedserver @server = N'TestServerLink', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'test-server.database.windows.net'; -- 配置链接服务器登录信息 EXEC sp_addlinkedsrvlogin @rmtsrvname=N'TestServerLink', @useself=N'False', @rmtuser=N'你的测试服务器管理员账号', @rmtpassword=N'你的测试服务器管理员密码';
步骤2:执行数据插入
针对每个需要复制的表,执行插入脚本(全量覆盖需先清空目标表):
-- 全量覆盖:先清空开发库目标表数据 TRUNCATE TABLE DevDatabase.dbo.TargetTable; -- 从测试库复制数据到开发库 INSERT INTO DevDatabase.dbo.TargetTable SELECT * FROM TestServerLink.TestDatabase.dbo.SourceTable; -- 增量复制示例:仅复制新增数据 INSERT INTO DevDatabase.dbo.TargetTable SELECT * FROM TestServerLink.TestDatabase.dbo.SourceTable WHERE CreateTime > (SELECT MAX(CreateTime) FROM DevDatabase.dbo.TargetTable);
注意:需确保测试库与开发库对应表结构完全一致,否则会出现列匹配错误
方法三:Azure门户导出/导入(适合大数据库离线复制)
步骤1:导出测试库到Azure存储
- 登录Azure门户,找到测试服务器的测试数据库
- 点击「导出」,选择目标存储账户和容器,设置BACPAC文件名
- 输入测试库管理员账号和密码,点击「确定」启动导出任务,等待文件生成完成
步骤2:导入BACPAC到开发库(仅导入数据)
- 找到开发服务器的开发数据库,点击「导入」
- 选择存储账户中的BACPAC文件,取消勾选「创建数据库」选项,选择已存在的开发库
- 输入开发库管理员账号和密码,点击「确定」启动导入任务,等待完成
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

