温馨提示×

Linux SQL Server数据迁移方法有哪些

小樊
35
2025-12-23 19:26:41
栏目: 云计算

Linux 上 SQL Server 数据迁移方法概览

场景 推荐方法 关键工具 适用要点
Windows 上的 SQL Server → Linux 上的 SQL Server 备份与还原(首选) SSMSsqlcmdscp/ssh 全备后传输到 Linux,必要时用 WITH MOVE 指定新数据文件路径
其他数据库(Access、DB2、MySQL、Oracle、Sybase)→ Linux 上的 SQL Server 迁移助手自动化 SQL Server Migration Assistant(SSMA) 支持模式与数据迁移、类型映射与转换评估
结构化文件(CSV/TSV 等)→ Linux 上的 SQL Server 批量导入 bcpSSIS bcp 快速批量导入;SSIS 在 Windows 上运行,支持复杂转换
需要高可用/零停机 跨平台可用性组 DH2i DxEnterprise 实现混合 Windows/Linux 的可用性组与灾备(第三方)
仅导出/导入架构与数据快照 导出/导入 BACPAC SSMSSqlPackage.exe 适合轻量迁移与快速验证,跨平台便捷

Windows 到 Linux 的备份与还原步骤

  • 在源端 Windows 上创建数据库全备
    • 使用 SSMS:对象资源管理器 → 数据库 → 右键目标库 → 任务 → 备份,类型选“完整”,备份到磁盘。
    • 或用 T‑SQL:
      BACKUP DATABASE [YourDB]
      TO DISK = N’C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak’
      WITH NOFORMAT, NOINIT, NAME = N’YourDB-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
      GO
  • 将备份文件传输到 Linux
    • 在 Windows 上安装 Bash(如 Windows Subsystem for LinuxGit Bash)。
    • 使用 scp 拷贝:scp YourDB.bak user1@192.168.2.9:./
    • 通过 ssh 登录 Linux,将文件移到 /var/opt/mssql/backup(该目录归 mssql 用户/组所有):
      sudo mv /home/user1/YourDB.bak /var/opt/mssql/backup/
  • 在 Linux 上还原
    • 使用 sqlcmd 连接本机实例:sqlcmd -S localhost -U sa
    • 基本还原(无次要文件或已确认路径):
      RESTORE DATABASE YourDB
      FROM DISK = ‘/var/opt/mssql/backup/YourDB.bak’
      WITH MOVE ‘YourDB’ TO ‘/var/opt/mssql/data/YourDB.mdf’,
      MOVE ‘YourDB_Log’ TO ‘/var/opt/mssql/data/YourDB_Log.ldf’;
      GO
    • 若有多个数据文件,先列出备份内文件清单并逐个 MOVE:
      RESTORE FILELISTONLY FROM DISK = ‘/var/opt/mssql/backup/YourDB.bak’;
      GO
  • 验证
    • SELECT name FROM sys.databases;
    • USE YourDB; SELECT * FROM YourTable;
  • 提示
    • 若遇到路径错误(如尝试还原到 Windows 路径),务必用 WITH MOVE 指定 Linux 下的 /var/opt/mssql/data/ 等有效路径。
    • 需要变更默认备份目录,可用 mssql-conf 进行配置。

从其他数据库迁移到 Linux 上的 SQL Server

  • 使用 SQL Server Migration Assistant(SSMA)Access、DB2、MySQL、Oracle、Sybase 等迁移至 Linux 上的 SQL Server
  • 流程要点:
    • 在 SSMA 中连接到源数据库,选择要迁移的对象。
    • 配置类型映射与转换规则,评估迁移障碍与修复建议。
    • 执行迁移并将数据加载到目标 Linux SQL Server 实例。
  • 适合需要自动化、批量与可控转换的场景。

结构化文件与批量导入方法

  • 使用 bcp 进行批量导入
    • 适合从 CSV/TSV 等结构化文件快速批量加载到已存在的表。
    • 可在 Linux 端直接执行 bcp 命令,结合格式文件实现高性能导入。
  • 使用 SSIS 执行 ETL
    • Windows 上设计 SSIS 包完成抽取、转换与加载。
    • 目标指向 Linux 上的 SQL Server,可在导入过程中执行更复杂的转换逻辑。

高可用与零停机方案与其他选项

  • 高可用与灾备
    • 借助 DH2i DxEnterprise 实现跨平台(Windows/Linux)的 SQL Server 可用性组,获得完整的 高可用灾难恢复 能力(第三方方案)。
  • 导出/导入 BACPAC
    • 使用 SSMSSqlPackage.exeLinux 上导出/导入 BACPAC(包含架构与数据的压缩包),适合轻量迁移、快速验证与开发/测试环境同步。

0