怎样迁移 SQL Server 数据库到 Azure SQL

发布时间:2021-12-30 10:15:06 作者:柒染
来源:亿速云 阅读:137
# 怎样迁移 SQL Server 数据库到 Azure SQL

## 目录
1. [迁移概述](#迁移概述)  
2. [准备工作](#准备工作)  
   - [2.1 评估源数据库](#评估源数据库)  
   - [2.2 选择Azure SQL服务层级](#选择azure-sql服务层级)  
   - [2.3 网络与权限配置](#网络与权限配置)  
3. [迁移方法详解](#迁移方法详解)  
   - [3.1 使用Azure Database Migration Service (DMS)](#使用azure-database-migration-service-dms)  
   - [3.2 通过备份与还原迁移](#通过备份与还原迁移)  
   - [3.3 使用事务复制](#使用事务复制)  
   - [3.4 导出/导入BACPAC文件](#导出导入bacpac文件)  
4. [迁移后验证](#迁移后验证)  
5. [常见问题与解决方案](#常见问题与解决方案)  
6. [最佳实践](#最佳实践)  

---

## 迁移概述
将SQL Server数据库迁移至Azure SQL是企业上云的常见需求,主要优势包括:  
- **弹性扩展**:按需调整计算和存储资源  
- **高可用性**:内置99.99% SLA保障  
- **降低运维成本**:免去硬件维护和软件补丁管理  

Azure提供多种迁移路径,选择取决于业务需求、停机时间容忍度和数据库复杂度。

---

## 准备工作

### 评估源数据库
1. **兼容性检查**  
   使用[Data Migration Assistant (DMA)](https://aka.ms/dma-download)工具检测兼容性问题:
   ```powershell
   # 下载并安装DMA
   Invoke-WebRequest -Uri "https://download.microsoft.com/download/C/6/3/C63D8695-CEF2-43C3-AF0A-4989507E429B/DataMigrationAssistant.msi" -OutFile "DMA.msi"
   Start-Process -FilePath "DMA.msi" -ArgumentList "/quiet" -Wait

典型兼容性问题包括: - 不支持的T-SQL语法(如WITH EXECUTE AS) - 跨数据库查询

  1. 性能基准测试
    记录关键指标:
    • 事务吞吐量 (TPS)
    • 查询响应时间
    • 并发连接数

选择Azure SQL服务层级

层级 适用场景 最大vCore 最大存储
服务器 间歇性工作负载 16 1TB
预配 稳定生产负载 80 4TB
超大规模 PB级数据 无限横向扩展 100TB+

网络与权限配置

  1. 防火墙规则

    -- 在Azure门户或通过T-SQL添加IP白名单
    EXECUTE sp_set_firewall_rule @name = N'Office_IP', 
                               @start_ip_address = '203.0.113.1', 
                               @end_ip_address = '203.0.113.254'
    
  2. 身份验证模式

    • 建议使用Azure Active Directory集成认证
    • 传统SQL认证需同步登录名:
    -- 使用DMA生成登录名迁移脚本
    SELECT * FROM sys.sql_logins
    

迁移方法详解

使用Azure Database Migration Service (DMS)

步骤: 1. 在Azure门户创建DMS实例(选择”Premium” SKU以获得最佳性能) 2. 配置源和目标连接: - 源:SQL Server的完全限定域名和凭据 - 目标:Azure SQL的服务器名称(如myserver.database.windows.net) 3. 选择离线迁移(一次性)或在线迁移(最小停机时间) 4. 监控迁移仪表板:

   # 使用CLI检查迁移状态
   az dms project task show --service-name MyDMS \
                            --resource-group MyRG \
                            --project-name MyProject \
                            --name MyTask

注意:
- 在线迁移需要配置CDC(变更数据捕获)
- 大型数据库(>1TB)建议分批次迁移

通过备份与还原迁移

前提条件: - SQL Server 2012 SP1 CU2+ 或更新版本 - 使用标准备份到URL语法

操作流程: 1. 将备份文件上传到Azure Blob存储:

   BACKUP DATABASE [AdventureWorks] 
   TO URL = 'https://mystorage.blob.core.windows.net/backups/AdventureWorks.bak'
   WITH COMPRESSION, STATS = 5
  1. 在Azure SQL中还原:

    # 使用Az.Sql模块
    Restore-AzSqlDatabase -FromBlobBackup `
     -ResourceGroupName "MyRG" `
     -ServerName "myserver" `
     -TargetDatabaseName "AdventureWorks" `
     -StorageAccountUrl "https://mystorage.blob.core.windows.net/" `
     -StorageAccountKey "mykey" `
     -BlobName "backups/AdventureWorks.bak"
    

使用事务复制

适用场景:
需要持续同步的双活系统

配置步骤: 1. 将Azure SQL配置为分发服务器 2. 设置发布者(本地SQL Server)和订阅者(Azure SQL) 3. 使用复制监视器验证数据流

导出/导入BACPAC文件

使用SQLPackage工具:

# 导出本地数据库
SqlPackage /Action:Export /SourceServerName:localhost /SourceDatabaseName:MyDB /TargetFile:MyDB.bacpac

# 导入到Azure SQL
SqlPackage /Action:Import /TargetServerName:myserver.database.windows.net /TargetDatabaseName:MyDB /TargetUser:admin /TargetPassword:***** /SourceFile:MyDB.bacpac

性能优化:
- 设置/p:CommandTimeout=0避免超时 - 使用Azure Storage中间存储加速传输


迁移后验证

  1. 数据一致性检查

    
    -- 使用CHECKSUM比较表数据
    SELECT 
     OBJECT_NAME(object_id) AS TableName,
     COUNT(*) AS RowCount,
     CHECKSUM_AGG(BINARY_CHECKSUM(*)) AS Checksum
    FROM Sales.Orders
    GROUP BY object_id;
    

  2. 性能测试

    • 使用Query Store捕获查询计划变化
    • 比较迁移前后的执行统计信息
  3. 应用连接测试
    修改连接字符串示例:

    Server=myserver.database.windows.net,1433;
    Database=MyDB;
    User ID=appuser@myserver;
    Password=*****;
    Encrypt=True;
    TrustServerCertificate=False;
    Connection Timeout=30;
    

常见问题与解决方案

问题现象 可能原因 解决方案
登录失败18456 防火墙阻挡 添加客户端IP到白名单
迁移超时 网络延迟高 启用DMS的压缩传输选项
不兼容的T-SQL 使用本地SQL特有功能 修改为Azure SQL兼容语法

最佳实践

  1. 时间规划

    • 在业务低峰期执行迁移(如周末凌晨)
    • 预留至少50%的缓冲时间
  2. 成本优化

    • 迁移期间临时提升Azure SQL层级(如从S3到P2)
    • 完成后降级以节省成本
  3. 灾难恢复

  4. 安全加固
    ”`sql – 启用透明数据加密(TDE) ALTER DATABASE [MyDB] SET ENCRYPTION ON;

– 配置漏洞评估 EXEC sp_add_vulnerability_assessment_baseline @database_name = ‘MyDB’


> **提示**:微软官方提供[Azure SQL迁移指南](https://aka.ms/AzureSQLMigrationGuide)包含详细checklist和工具包。

通过系统化的规划、合适的工具选择和严谨的验证流程,企业可以高效完成SQL Server到Azure SQL的迁移,充分享受云数据库的弹性与智能化优势。

该文档包含: - 完整迁移流程的技术细节 - 多种迁移方法的对比与操作指南 - 实用的代码片段和命令行示例 - 结构化的问题排查表格 - 符合企业级需求的最佳实践建议

可根据实际环境调整参数和工具版本。需要扩展某个部分时可添加具体案例或屏幕截图。

推荐阅读:
  1. 使用DMS迁移AWS RDS MySQL到Azure Dat
  2. Azure Migrate 的迁移工具有哪些?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql server azure sql

上一篇:SAP增量导入功能怎么使用

下一篇:git的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》