首页主机资讯SQL Server在Ubuntu上的数据迁移技巧有哪些

SQL Server在Ubuntu上的数据迁移技巧有哪些

时间2025-11-28 19:11:04发布访客分类主机资讯浏览1403
导读:SQL Server在Ubuntu上的数据迁移技巧 一、优先选择备份还原 使用 完整备份(FULL)+ RESTORE 是将数据库从 Windows 迁移到 Ubuntu(Linux) 的推荐路径,流程成熟、可控性强。 在源库(Windo...

SQL Server在Ubuntu上的数据迁移技巧

一、优先选择备份还原

  • 使用 完整备份(FULL)+ RESTORE 是将数据库从 Windows 迁移到 Ubuntu(Linux) 的推荐路径,流程成熟、可控性强。
  • 在源库(Windows)用 SSMS 或 T‑SQL 生成 .bak
    BACKUP DATABASE [YourDB] TO DISK = N’C:\Path\YourDB.bak’ WITH NOFORMAT, NOINIT, NAME = N’YourDB-Full’, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
  • 将备份文件从 Windows 传到 Ubuntu:在 Windows 上启用 Bash(WSL 或 Git Bash),用 scp 安全复制;在 Ubuntu 上用 sqlcmd 执行还原。
  • 在 Ubuntu 上还原时,注意 WITH MOVE 将数据和日志文件放到 Linux 默认目录(如 /var/opt/mssql/data),并指定 REPLACE, RECOVERY;还原后用查询校验数据一致性。
  • 适用场景:一次性全量迁移、跨平台搬迁、版本升级伴随迁移。

二、迁移工具与方式对比

方式 适用场景 关键要点
备份还原(.bak) 全量迁移、跨平台 简单可靠;注意文件路径、逻辑名、WITH MOVE、REPLACE、RECOVERY
SSMS 导出数据/生成脚本 小规模或选择性迁移 向导化导出为脚本或数据文件;在 Ubuntu 上用 sqlcmd/SSMS 导入
跨平台 Always On 可用性组 高可用与近零停机 支持 Windows ↔ Linux 跨平台;需正确配置集群与见证
第三方对比/同步工具 结构/数据比对与持续同步 Redgate SQL Compare、ApexSQL Diff;便于校验与增量同步
  • 选择建议:优先用 备份还原;需要不停机时考虑 Always On;结构差异大或需审计时用 第三方工具 辅助。

三、关键操作要点与命令示例

  • 备份(Windows,SSMS 或 T‑SQL):
    BACKUP DATABASE [YourDB] TO DISK = N’C:\Path\YourDB.bak’ WITH NOFORMAT, NOINIT, NAME = N’YourDB-Full’, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
  • 传输(Windows Bash → Ubuntu):
    scp ‘C:\Path\YourDB.bak’ user@ubuntu:/var/opt/mssql/backup/YourDB.bak
  • 还原(Ubuntu,sqlcmd):
    sqlcmd -S localhost -E -Q “RESTORE DATABASE [YourDB] FROM DISK = ‘/var/opt/mssql/backup/YourDB.bak’ WITH MOVE ‘YourDB_Data’ TO ‘/var/opt/mssql/data/YourDB.mdf’, MOVE ‘YourDB_Log’ TO ‘/var/opt/mssql/data/YourDB_log.ldf’, STATS = 1, REPLACE, RECOVERY”
  • 校验:
    sqlcmd -S localhost -E -Q “SELECT COUNT(*) FROM [YourDB].[dbo].[YourTable]; ”
  • 提示:逻辑文件名(如 YourDB_Data/YourDB_Log)可在 SSMS 的数据库属性或 RESTORE FILELISTONLY 中获取;Ubuntu 上数据文件默认目录为 /var/opt/mssql/data

四、常见坑与规避

  • 文件路径与权限:Linux 路径区分大小写,确保 /var/opt/mssql/data 可写,sqlcmd 以 mssql 用户或具备相应权限运行。
  • 逻辑名与 WITH MOVE:还原时必须用 WITH MOVE 指定新的 MDF/LDF 路径,逻辑名错误会导致还原失败。
  • 兼容性:跨版本迁移时,目标 SQL Server on Linux 版本需不低于源库功能级别;必要时先升级源库或在目标库启用相应兼容级别。
  • 大文件传输:.bak 较大时,优先使用 scp/rsync 断点续传;在 Ubuntu 上预留足够磁盘空间与 I/O 带宽。
  • 字符与编码:若采用 CSV/脚本方式迁移,注意 UTF‑8/Unicode 一致性,避免导入后出现乱码。

五、迁移后的验证与收尾

  • 数据一致性:抽样对比 行数、聚合值、主键范围,必要时用 CHECKSUM 或第三方工具做全量比对。
  • 依赖对象:核验 登录名、用户映射、链接服务器、SQL Agent 作业、触发器/视图/存储过程 是否完整迁移。
  • 连接与权限:更新应用 连接字符串,检查 sa 与业务账号权限、端口(默认 1433)与防火墙策略。
  • 性能基线:收集迁移前后 执行计划、等待统计、I/O 与 CPU,按需调整 内存/MAXDOP/并行度 等参数。

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


若转载请注明出处: SQL Server在Ubuntu上的数据迁移技巧有哪些
本文地址: https://pptw.com/jishu/759316.html
Linux SSH如何快速连接远程服务器 Linux vsftp带宽限制设置:如何避免网络拥堵

游客 回复需填写必要信息