温馨提示×

Ubuntu SQL Server数据库迁移技巧

小樊
41
2025-10-13 19:10:49
栏目: 云计算

Ubuntu环境下SQL Server数据库迁移实用技巧

1. 准备工作:构建迁移基础

在启动迁移前,需完成以下关键准备:

  • 验证兼容性:确保Ubuntu系统版本(如20.04/22.04)符合目标SQL Server版本的最低要求(如SQL Server 2022支持Ubuntu 20.04及以上);
  • 安装SQL Server:通过Microsoft官方仓库安装SQL Server(参考命令:wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc 注册密钥,sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 main" 添加仓库,sudo apt-get install -y mssql-server 安装);
  • 安装命令行工具:为后续操作安装sqlcmdmssql-toolssudo apt-get install -y mssql-tools unixodbc-dev,并将/opt/mssql-tools/bin添加至PATH环境变量);
  • 备份源数据库:使用SSMS或sqlcmd在源SQL Server(Windows或其他Ubuntu实例)上创建完整备份(命令示例:BACKUP DATABASE [YourDB] TO DISK = 'C:\backup\YourDB.bak' WITH INIT)。

2. 核心方法:备份与还原(最常用)

步骤详解

  • 传输备份文件:通过SCP/SFTP将源数据库备份文件(如YourDB.bak)从源服务器复制到Ubuntu目标服务器的目标目录(如/tmp);
  • 还原数据库:使用sqlcmd执行还原命令,需指定数据文件(.mdf)和日志文件(.ldf)的新路径(Ubuntu下默认路径为/var/opt/mssql/data/)。示例命令:
    RESTORE DATABASE [YourDB] FROM DISK = '/tmp/YourDB.bak' WITH MOVE 'YourDB_Data' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf', REPLACE, RECOVERY; 
    • REPLACE:覆盖目标服务器中同名数据库;
    • RECOVERY:将数据库恢复至可用状态(若需进一步恢复事务日志,可替换为NORECOVERY)。

3. 复杂场景:使用SQL Server工具

  • SQL Server Integration Services (SSIS):适用于需要数据转换(如字段映射、清洗)、自动化调度(如每日同步)的场景。通过SSMS创建SSIS项目,设计数据流任务(如OLE DB Source连接源数据库、OLE DB Destination连接Ubuntu SQL Server),并部署到SSIS Catalog执行;
  • SQL Server Data Tools (SSDT):适用于需要迁移数据库架构(如表结构、存储过程)和数据的场景。通过Visual Studio创建数据库项目,导入源数据库架构(右键项目→导入→数据层应用程序),修改架构(如调整兼容性级别),再发布到Ubuntu SQL Server。

4. 大数据量优化:bcp实用程序

对于包含大量数据(如百万级行)的表,bcp(Bulk Copy Program)是高效的选择:

  • 导出数据:在源服务器上使用bcp导出表数据至CSV文件(命令示例:bcp YourDB.dbo.YourTable out /tmp/YourTable.csv -c -t, -T -S source_server);
  • 传输文件:将CSV文件复制到Ubuntu服务器;
  • 导入数据:在Ubuntu上使用bcp导入数据(命令示例:bcp YourDB.dbo.YourTable in /tmp/YourTable.csv -c -t, -T -S localhost)。
    • -c:使用字符数据类型;
    • -t,:字段分隔符为逗号;
    • -T:使用可信连接(Windows认证);若为SQL Server认证,替换为-U sa -P YourPassword

5. 第三方工具简化操作

  • Navicat for Linux:提供图形化界面,支持跨平台(Windows→Ubuntu)迁移。步骤:安装Navicat→添加源和目标数据库连接→选择要迁移的数据库/表→使用“导出向导”生成SQL文件→使用“导入向导”导入至Ubuntu SQL Server;
  • SQLines:开源工具,支持SQL语法转换(如MySQL→SQL Server)和数据迁移。通过命令行执行迁移(示例:sqlines -s=MYSQL -t=SQLSERVER -i=input.sql -o=output.sql),或使用GUI工具可视化操作。

6. 关键注意事项

  • 权限与安全:确保Ubuntu目标服务器的SQL Server实例允许远程连接(若需),配置防火墙放行1433端口(sudo ufw allow 1433);使用强密码保护sa账户,避免未授权访问;
  • 文件系统权限:还原数据库时,目标目录(如/var/opt/mssql/data/)需对SQL Server服务账户(mssql)有读写权限(sudo chown -R mssql:mssql /var/opt/mssql/data/);
  • 版本升级:若从旧版本SQL Server(如2019)迁移至新版本(如2022),需先在Ubuntu上安装新版本SQL Server,再还原备份(新版本兼容旧版本备份,但部分新特性可能无法使用);
  • 验证与测试:迁移后,使用sqlcmd检查数据库状态(SELECT name, state_desc FROM sys.databases WHERE name = 'YourDB')、数据完整性(如SELECT COUNT(*) FROM YourTable),并进行性能基准测试(如执行常用查询对比迁移前后耗时)。

0