Ubuntu与SQL Server数据迁移方法
导读:Ubuntu 与 SQL Server 数据迁移方法 一、常用迁移路径与适用场景 备份还原(.bak):同版本或跨版本迁移、一次性全量迁移首选,操作直观、可回滚。 bcp 批量导入/导出:跨平台、跨实例大批量数据迁移或增量同步,灵活高效。...
Ubuntu 与 SQL Server 数据迁移方法
一、常用迁移路径与适用场景
- 备份还原(.bak):同版本或跨版本迁移、一次性全量迁移首选,操作直观、可回滚。
- bcp 批量导入/导出:跨平台、跨实例大批量数据迁移或增量同步,灵活高效。
- SSMS 图形化导出/导入数据:适合小规模或一次性迁移,上手快。
- 数据库镜像 / AlwaysOn 可用性组:面向高可用与不停机切换,需企业版与集群组件支持。
- 第三方工具:如 Redgate SQL Compare、ApexSQL Diff,用于模式与数据比对/同步。
以上路径在 Ubuntu 上的 SQL Server 环境中均可用,选择时优先考虑数据量、停机窗口、版本差异与自动化需求。
二、方法一 备份还原(.bak)
- 步骤概览
- 在源库执行完整备份(SSMS 或 sqlcmd)。
- 将 .bak 文件传输到 Ubuntu(如 scp/rsync)。
- 在 Ubuntu 上用 sqlcmd 还原,必要时使用 WITH MOVE 指定数据/日志文件路径。
- 校验对象与数据一致性。
- 关键命令示例
- 备份(源库)
BACKUP DATABASE [YourDB] TO DISK = N'/path/YourDB.bak' WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full', SKIP, NOREWIND, NOUNLOAD, STATS = 10; - 还原(Ubuntu 上的目标实例)
sqlcmd -S < 服务器名或IP> -U sa -P '< 密码> ' -Q " RESTORE DATABASE [YourDB] FROM DISK = N'/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB_Data' TO N'/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO N'/var/opt/mssql/data/YourDB_log.ldf', STATS = 5, REPLACE, RECOVERY; " - 提示
- 逻辑文件名(如 YourDB_Data/YourDB_Log)可用 SSMS 或 RESTORE FILELISTONLY 查询。
- 目标路径需为 mssql 服务可写目录(常见为 /var/opt/mssql/data)。
- 跨版本还原时,目标实例版本需不低于源库;必要时考虑升级策略与兼容性检查。
- 备份(源库)
三、方法二 bcp 批量导入导出
- 适用场景
- 从文件或其他数据库导出为 CSV/TSV,用 bcp 批量导入到 SQL Server(Ubuntu)。
- 跨实例、跨平台迁移大表,或做增量/分片加载。
- 关键命令示例
- 导出(源库)
bcp YourDB.dbo.YourTable out /tmp/YourTable.tsv -S < 源服务器> -U sa -P '< 密码> ' -c -t ' ' -r '\n' -T - 导入(Ubuntu 上的目标实例)
bcp YourDB.dbo.YourTable in /tmp/YourTable.tsv -S < 目标服务器> -U sa -P '< 密码> ' -c -t ' ' -r '\n' -E - 提示
- 字段分隔符/行终止符可按需调整(如 -t ‘,’ -r ‘\n’)。
- 大表建议分批(TOP/WHERE 分片)导入,结合事务与错误日志控制。
- 字符集、空值、日期格式需与表定义一致,必要时使用格式文件(-f)。
- 导出(源库)
四、方法三 SSMS 图形化导出导入与工具选择
- SSMS 导出/导入数据
- 在 SSMS 中连接到源库,使用“任务”→“导出数据”将表/查询导出为平面文件,再在目标库执行“导入数据”。
- 适合小数据量、一次性迁移或快速验证。
- 第三方工具
- Redgate SQL Compare、ApexSQL Diff 可比对并同步对象结构/数据,适合复杂迁移与版本对齐。
- 高可用方案(可选)
- 需要不停机或快速切换时,可考虑 数据库镜像 或 AlwaysOn 可用性组(Linux 上通常结合 Pacemaker/Corosync 等集群组件)。
五、迁移前后检查与常见问题
- 迁移前
- 完整备份与回滚预案;评估数据量与停机窗口;确认 Ubuntu 上 SQL Server 已安装并可访问;准备 sqlcmd/bcp 等工具。
- 迁移后
- 校验对象数量、行数、主键/外键、约束、索引、触发器、视图;抽样查询与关键业务验证;性能基线对比与必要调优。
- 常见问题与处理
- 权限/路径:确保运行 mssql 的用户对目标目录(如 /var/opt/mssql/data)具备写权限;备份文件与还原路径一致。
- 逻辑文件名不匹配:用 RESTORE FILELISTONLY 确认并调整 MOVE 参数。
- 版本与兼容性:跨版本还原需满足版本规则;必要时先升级目标实例或使用兼容级别策略。
- 工具可用性:在 Ubuntu 上安装 mssql-tools18(含 sqlcmd/bcp)以执行脚本化迁移与批量操作。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu与SQL Server数据迁移方法
本文地址: https://pptw.com/jishu/754794.html
