centos上sqlserver数据迁移步骤
导读:CentOS 上 SQL Server 数据迁移步骤 一 迁移方案选择 备份还原(.bak):最稳妥、结构与数据一致性最好,适合跨机器、跨版本(遵循兼容规则)迁移。 分离附加(.mdf/.ldf):仅适用于同版本或兼容版本,且需停机,风险...
CentOS 上 SQL Server 数据迁移步骤
一 迁移方案选择
- 备份还原(.bak):最稳妥、结构与数据一致性最好,适合跨机器、跨版本(遵循兼容规则)迁移。
- 分离附加(.mdf/.ldf):仅适用于同版本或兼容版本,且需停机,风险较高,不作为首选。
- 导入导出/SSIS/第三方ETL:适合跨库、跨平台或异构目标(如到 MySQL/PostgreSQL),在 CentOS 上可用 sqlcmd/T-SQL 配合实现数据搬运与转换。
二 准备与环境检查
- 版本与兼容性
- SQL Server 2017 起支持 Linux(含 CentOS 7/8);在 CentOS 上更推荐 SQL Server 2019/2022,其中 2022 与 RHEL 8/9 的适配更佳,CentOS 7 上可用 2019/2022 但需关注内核与依赖。迁移时目标实例版本需不低于源实例(遵循备份还原的版本兼容矩阵)。
- 网络与防火墙
- 开放 1433/TCP,确保源/目标实例互通:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent & & sudo firewall-cmd --reload
- 开放 1433/TCP,确保源/目标实例互通:
- 工具与目录
- 安装命令行工具:
sudo yum install -y mssql-tools unixODBC-devel - 准备备份目录(示例):
sudo mkdir -p /var/opt/mssql/backup & & sudo chown mssql:mssql /var/opt/mssql/backup
- 安装命令行工具:
- 连接与权限
- 使用具有备份/还原权限的账户(如 sa 或具备相应权限的域/SQL 登录)。
三 方法一 备份还原迁移(推荐)
- 源库备份(Windows 或 Linux)
- SSMS:数据库 → 任务 → 备份 → 选择“完整备份”,目标指向本地或网络共享;如需与旧版本兼容,可在“选项”中设置“兼容级别/Checksum”等。
- 或在命令行使用 sqlcmd/T-SQL:
BACKUP DATABASE [YourDB] TO DISK = N'D:\Backup\YourDB.bak' WITH COMPRESSION, STATS = 5, COPY_ONLY; GO
- 将备份文件传输到 CentOS
- 使用 WinSCP/SCP/SFTP 将 .bak 上传至目标目录(如 /var/opt/mssql/backup),并确认 mssql 用户对目录有读写权限。
- 在 CentOS 上还原
- 先查看备份内逻辑文件名与大小(避免盲目 MOVE):
RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/backup/YourDB.bak'; GO - 执行还原并指定新数据/日志文件路径(Linux 默认数据目录为 /var/opt/mssql/data):
RESTORE DATABASE [YourDB] FROM DISK = N'/var/opt/mssql/backup/YourDB.bak' WITH MOVE N'YourDB_Data' TO N'/var/opt/mssql/data/YourDB.mdf', MOVE N'YourDB_Log' TO N'/var/opt/mssql/data/YourDB_log.ldf', STATS = 5, REPLACE; GO - 还原后按需调整:文件自动增长、兼容性级别、统计信息更新、索引重建等。
- 先查看备份内逻辑文件名与大小(避免盲目 MOVE):
四 方法二 分离附加迁移(同版本优先)
- 源库分离(SSMS)
- 数据库 → 任务 → 分离 → 勾选“删除连接/更新统计信息”,待分离完成。
- 拷贝文件
- 将 .mdf/.ldf 从源服务器复制到 CentOS(如 /var/opt/mssql/data),确保 mssql 用户权限正确。
- 目标库附加
- SSMS:数据库 → 附加 → 添加 .mdf;或在 sqlcmd:
CREATE DATABASE [YourDB] ON (FILENAME = N'/var/opt/mssql/data/YourDB.mdf'), (FILENAME = N'/var/opt/mssql/data/YourDB_log.ldf') FOR ATTACH; GO
- SSMS:数据库 → 附加 → 添加 .mdf;或在 sqlcmd:
- 注意
- 仅建议同版本或明确兼容的场景使用;附加失败多与权限/路径/版本不匹配相关。
五 方法三 导入导出与跨平台迁移
- 场景
- 将数据从 SQL Server 迁移至 MySQL/GreatSQL/PostgreSQL 等,或在库间做轻量同步。
- 工具与流程
- 使用 DataX 配置 SQLServerReader 与 MySQLWriter/GreatSQLWriter 等作业,实现批量抽取与加载;适合异构迁移与 ETL 转换。
- 也可在 Windows 端用 SSIS/导入导出向导 做一次性搬迁,再在 CentOS 上复核与优化。
六 校验与常见问题
- 一致性校验
- 行数/校验和对比、抽样查询、外键/约束启用后完整性检查;必要时执行
DBCC CHECKDB。
- 行数/校验和对比、抽样查询、外键/约束启用后完整性检查;必要时执行
- 常见报错与处理
- “备份集无效/来自不同版本”:检查目标实例版本是否兼容,必要时在源端使用
WITH COMPATIBILITY_LEVEL或在目标端选择可还原的备份。 - “操作系统错误 5(拒绝访问)”:确认 .bak 或 .mdf/.ldf 的属主与权限为 mssql:mssql,且路径在 SQL Server 可访问范围内。
- “文件已存在/无法覆盖”:还原时使用
WITH REPLACE;或先DROP DATABASE(确保有备份)。 - “无法打开备份设备”:路径、文件名或 SELinux/防火墙策略导致不可达,核对路径与网络连通性。
- “备份集无效/来自不同版本”:检查目标实例版本是否兼容,必要时在源端使用
- 高可用与限制
- Linux 上的 SQL Server 原生 Always On 可用性组支持有限,若需高可用可结合 日志传送/事务复制 或应用侧容错设计。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上sqlserver数据迁移步骤
本文地址: https://pptw.com/jishu/788315.html
