首页主机资讯centos上sqlserver数据迁移步骤

centos上sqlserver数据迁移步骤

时间2026-01-21 08:05:03发布访客分类主机资讯浏览832
导读: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,其中 2022RHEL 8/9 的适配更佳,CentOS 7 上可用 2019/2022 但需关注内核与依赖。迁移时目标实例版本需不低于源实例(遵循备份还原的版本兼容矩阵)。
  • 网络与防火墙
    • 开放 1433/TCP,确保源/目标实例互通:sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent & & sudo firewall-cmd --reload
  • 工具与目录
    • 安装命令行工具: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
      
    • 还原后按需调整:文件自动增长、兼容性级别、统计信息更新、索引重建等。

四 方法二 分离附加迁移(同版本优先)

  • 源库分离(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
      
  • 注意
    • 仅建议同版本或明确兼容的场景使用;附加失败多与权限/路径/版本不匹配相关。

五 方法三 导入导出与跨平台迁移

  • 场景
    • 将数据从 SQL Server 迁移至 MySQL/GreatSQL/PostgreSQL 等,或在库间做轻量同步。
  • 工具与流程
    • 使用 DataX 配置 SQLServerReaderMySQLWriter/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
centos中sqlserver存储过程怎么用 centos下sqlserver版本选择指南

游客 回复需填写必要信息