SQL Server在Ubuntu上的数据迁移技巧有哪些
导读: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
