首页主机资讯如何迁移SQL Server到CentOS平台

如何迁移SQL Server到CentOS平台

时间2025-12-10 15:52:03发布访客分类主机资讯浏览1001
导读:迁移 SQL Server 到 CentOS 的可行方案与步骤 一、方案总览与前置检查 支持性:自 SQL Server 2017 起支持在 Linux(含 CentOS) 上运行,生产常用 CentOS 7/8 与 SQL Server...

迁移 SQL Server 到 CentOS 的可行方案与步骤

一、方案总览与前置检查

  • 支持性:自 SQL Server 2017 起支持在 Linux(含 CentOS) 上运行,生产常用 CentOS 7/8SQL Server 2019/2022 的组合,兼容性良好。迁移前建议统一版本并评估功能差异。
  • 兼容性核对:
    • 检查源库功能依赖(如 CLR 程序集、SQL Server Agent 作业、跨数据库查询、分布式事务等)在 Linux 上的支持情况。
    • 评估数据库兼容级别与目标版本匹配(如 SQL Server 2019 → 150SQL Server 2022 → 160),必要时预留升级窗口。
    • 核对字符集/排序规则、文件路径长度、登录/权限模型(Windows 身份验证在 Linux 上不可用,需使用 SQL 身份验证或 Kerberos)。
  • 资源与网络:
    • 目标机建议内存 ≥4 GB(最小 2 GB),/var/opt/mssql 目录预留 ≥6 GB 空间;开放 1433/TCP 端口并放通防火墙。
    • 建议准备一台跳板/中转机用于备份文件传输与工具连接。

二、方案一 备份还原(.bak,最通用)

  • 步骤1 源库备份:在 Windows 上使用 SSMS 执行完整备份,生成 .bak 文件;将备份文件复制到 CentOS(如 /var/opt/mssql/backup/)。
  • 步骤2 目标机准备:
    • 安装 SQL Server(以 CentOS 7 + SQL Server 2019 为例):
      • 添加仓库并安装:sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
      • 安装:sudo yum install -y mssql-server
      • 初始化:sudo /opt/mssql/bin/mssql-conf setup
      • 启动:sudo systemctl start mssql-server;开机自启:sudo systemctl enable mssql-server
      • 防火墙:sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent & & sudo firewall-cmd --reload
    • 安装命令行工具(sqlcmd):
      • 添加工具源:sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
      • 安装:sudo yum install -y mssql-tools unixODBC-devel
      • 环境变量:echo ‘export PATH=$PATH:/opt/mssql-tools/bin’ > > ~/.bash_profile & & source ~/.bash_profile
  • 步骤3 还原数据库(sqlcmd 示例):
    • 连接:sqlcmd -S localhost -U SA -P ‘< YourStrong!Passw0rd> ’
    • 还原(注意 MOVE 到 Linux 默认数据目录,逻辑文件名可用 RESTORE FILELISTONLY 查看):
      • RESTORE DATABASE YourDB FROM DISK = ‘/var/opt/mssql/backup/YourDB.bak’ WITH MOVE ‘YourDB’ TO ‘/var/opt/mssql/data/YourDB.mdf’, MOVE ‘YourDB_Log’ TO ‘/var/opt/mssql/data/YourDB_log.ldf’, STATS = 1, REPLACE, RECOVERY GO
  • 步骤4 验证:SELECT name FROM sys.databases; 以及抽样查询校验数据一致性。

三、方案二 仅迁移数据(导入导出向导 SSIS,适合大库分片或选择性迁移)

  • 在 Windows 上打开 SQL Server 导入和导出向导(SSIS)
    • 数据源:选择源 SQL Server 与数据库;目标:选择目标 Linux 上的 SQL Server(可用 IP 连接,如 192.168.x.x)。
    • 选择“从表或视图复制数据”或编写自定义查询,按需映射表结构/数据类型。
    • 可保存 SSIS 包到文件系统或 SSIS 目录以便复用与自动化。
  • 执行并校验:完成向导后,在目标库对关键表执行行数/聚合校验,确保数据完整一致。

四、方案三 仅迁移对象(生成脚本,适合“空库+结构+静态数据”)

  • 使用 SSMS 在源库执行:任务 → 生成脚本,勾选“编写数据库脚本”,选择对象范围(表、视图、存储过程、函数、触发器、用户等),生成 .sql 脚本。
  • 在目标 Linux 实例上用 sqlcmd 执行脚本:sqlcmd -S -U SA -P ‘’ -i C:\path\script.sql
  • 适合“结构先行、数据后补”的场景;大数据量不建议一次性脚本导入。

五、迁移后验证与常见问题处理

  • 版本与兼容级别:
    • 确认版本:SELECT @@VERSION;
    • 调整兼容级别(示例:SQL Server 2022 为 160):ALTER DATABASE [YourDB] SET COMPATIBILITY_LEVEL = 160;
  • 一致性检查:DBCC CHECKDB([YourDB]) WITH NO_INFOMSGS, ALL_ERRORMSGS;
  • 连接与网络:
    • 远程连接测试:sqlcmd -S < Linux_IP> -U SA -P ‘’
    • 若失败,检查防火墙 1433/TCP、SQL Server 是否监听 TCP、SELinux/AppArmor 策略。
  • 常见报错与要点:
    • 备份还原失败提示找不到逻辑文件名:先执行 RESTORE FILELISTONLY 查看 .bak 中的逻辑名,再在 MOVE 子句中使用正确名称。
    • 工具未找到或命令不可用:确认已安装 mssql-tools 并正确设置 PATH
    • 功能不可用:如 SQL Server Agent 在 Linux 上以受限模式提供(部分作业类型不支持),需改造为脚本+T-SQL/外部调度。

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


若转载请注明出处: 如何迁移SQL Server到CentOS平台
本文地址: https://pptw.com/jishu/768370.html
CentOS上SQL Server集群搭建指南 CentOS上SQL Server故障排查步骤

游客 回复需填写必要信息