首页主机资讯Ubuntu上SQL Server的数据库迁移方法

Ubuntu上SQL Server的数据库迁移方法

时间2025-12-04 18:35:03发布访客分类主机资讯浏览320
导读:Ubuntu上 SQL Server 数据库迁移方法 一、常用迁移方式与适用场景 备份还原(.bak):最稳妥、适合跨版本/跨平台迁移,支持完整恢复与时间点恢复(若含差异/日志备份)。 生成脚本 + 批量导入(mssql-scripter...

Ubuntu上 SQL Server 数据库迁移方法

一、常用迁移方式与适用场景

  • 备份还原(.bak):最稳妥、适合跨版本/跨平台迁移,支持完整恢复与时间点恢复(若含差异/日志备份)。
  • 生成脚本 + 批量导入(mssql-scripter + bcp):适合无停机窗口、版本差异较大或仅需迁移部分对象/数据的场景。
  • SSMS 图形化导出/导入数据:适合一次性小规模迁移或临时验证,操作直观。

二、方法一 备份还原 .bak(推荐)

  • 源库备份(Windows 或 Linux)
    • 使用 SSMS 执行完整备份,或用 T‑SQL:
      • BACKUP DATABASE [YourDB] TO DISK = N’/path/YourDB.bak’ WITH INIT, NAME = N’YourDB-Full’;
  • 将备份文件传输到 Ubuntu
    • 推荐 scp:
      • scp YourDB.bak user1@192.168.2.9:./
    • 也可使用 Samba 网络共享(Windows 访问 \machinenameorip\share)。
  • 在 Ubuntu 上准备目录并移动备份
    • SQL Server on Linux 默认数据/备份目录属 mssql:mssql,应将 .bak 放入其可写目录(如 /var/opt/mssql/backup):
      • ssh user1@192.168.2.9
      • sudo su
      • mkdir -p /var/opt/mssql/backup
      • mv /home/user1/YourDB.bak /var/opt/mssql/backup/
      • exit
  • 安装命令行工具(若未安装)
    • Ubuntu 22.04 示例:
      • curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
      • curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
      • sudo apt update
      • sudo apt install mssql-tools18 unixodbc-dev
      • echo ‘export PATH=“$PATH:/opt/mssql-tools18/bin”’ > > ~/.bashrc & & source ~/.bashrc
  • 在 Ubuntu 上还原
    • 连接并还原(需替换逻辑文件名与路径):
      • 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
    • 提示
      • 逻辑文件名可用 RESTORE FILELISTONLY 查看;若目标库已存在,可加 WITH REPLACE
      • 如需变更默认备份/数据目录,可用 mssql-conf 配置。

三、方法二 生成脚本 + 批量导入(无停机、脚本化)

  • 在 Ubuntu 上导出数据库脚本(mssql-scripter)
    • 安装(Python/pip 环境):
      • sudo apt-get update
      • sudo apt-get install python3-pip libunwind8
      • pip3 install --upgrade pip
      • pip3 install mssql-scripter
    • 导出示例:
      • mssql-scripter -S < 源服务器> -d < 数据库名> -U < 用户> -P < 密码> --schema-and-data --include-objects dbo.Table1,dbo.Table2 -f schema_data.sql
  • 在 Ubuntu 上导入脚本(sqlcmd)
    • sqlcmd -S localhost -U sa -d master -i schema_data.sql
  • 仅导出/导入大表数据(bcp)
    • 导出:
      • bcp < 数据库名> .dbo.Table1 out /tmp/Table1.dat -S localhost -U sa -P ‘< 密码> ’ -n -c
    • 导入:
      • bcp < 数据库名> .dbo.Table1 in /tmp/Table1.dat -S localhost -U sa -P ‘< 密码> ’ -n -c -t ‘,’ -r ‘\n’
    • 提示
      • bcp 适合大数据量批处理;结合 -F/-L 做分片导出,或在低峰期执行。

四、方法三 SSMS 图形化导出与导入数据

  • 在 SSMS 中右键数据库 → 任务导出数据,选择源/目标数据源(目标可用 SQL Server Native Client 指向 Ubuntu 上的实例),按向导映射表与列完成迁移。
  • 适合小规模或一次性迁移;大数据量时建议改用 备份还原bcp 以获得更好性能与可控性。

五、迁移后验证与常见问题

  • 验证要点
    • 对象一致性:核对表、视图、存储过程、触发器数量与定义。
    • 数据一致性:抽样对比行数、关键聚合/校验和,必要时做全量比对。
    • 依赖与权限:检查登录、用户、角色、权限及 SQL Server Agent 作业。
    • 应用连通:更新连接字符串、连接池与超时设置,在预发环境充分回归。
  • 常见问题与处理
    • 权限/路径:确保 .bak 位于 /var/opt/mssql/ 下且属 mssql:mssql;否则还原会报权限错误。
    • 逻辑文件名不匹配:用 RESTORE FILELISTONLY 确认后,在 RESTORE 语句中使用正确的 MOVE 参数。
    • 版本兼容:跨版本迁移时遵循 SQL Server 支持矩阵;必要时在源端使用与目标版本兼容的备份工具/脚本。
    • 工具缺失:Ubuntu 上需安装 mssql-tools18(含 sqlcmd/bcp)以执行还原与导入导出。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上SQL Server的数据库迁移方法
本文地址: https://pptw.com/jishu/763787.html
ubuntu进程网络连接问题怎么排查 Linux vsftp脚本编程:如何自动化管理任务

游客 回复需填写必要信息