SQL Server在Ubuntu上的数据迁移指南
导读:SQL Server数据迁移到Ubuntu指南 一、迁移前准备工作 1. 系统与工具准备 Ubuntu系统要求:确保Ubuntu版本(如20.04/22.04 LTS)符合SQL Server的最低支持要求;安装curl、wget、vim...
SQL Server数据迁移到Ubuntu指南
一、迁移前准备工作
1. 系统与工具准备
- Ubuntu系统要求:确保Ubuntu版本(如20.04/22.04 LTS)符合SQL Server的最低支持要求;安装
curl
、wget
、vim
等基础工具(sudo apt update & & sudo apt install -y curl wget vim
)。 - 安装SQL Server:通过Microsoft官方仓库安装SQL Server(以2022版本为例):
# 导入GPG密钥并注册仓库 curl 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/22.04/mssql-server-2022 main" # 更新并安装SQL Server sudo apt update & & sudo apt install -y mssql-server # 配置SQL Server(设置SA密码及版本) sudo /opt/mssql/bin/mssql-conf setup # 启动服务并设置开机自启 sudo systemctl start mssql-server & & sudo systemctl enable mssql-server
- 安装命令行工具:安装
sqlcmd
(用于命令行操作)和mssql-tools
:sudo apt install -y unixodbc-dev sudo apt install -y mssql-tools # 将工具添加至PATH环境变量 echo 'export PATH="$PATH:/opt/mssql-tools/bin"' > > ~/.bashrc source ~/.bashrc
2. 版本兼容性检查
- 确认目标Ubuntu系统的SQL Server版本与源数据库版本兼容(如SQL Server 2019及以上版本支持Ubuntu 20.04/22.04);
- 检查源数据库的功能(如CLR集成、扩展存储过程)是否被目标版本支持。
二、常见迁移方法
1. 备份与还原法(推荐)
(1)Windows端创建备份
- 使用SQL Server Management Studio (SSMS) 连接源SQL Server实例;
- 右键目标数据库 → 选择「任务」→「备份」;
- 设置备份类型为「完全」,指定备份文件路径(如
D:\Backups\YourDB.bak
)→ 点击「确定」完成备份。
(2)传输备份文件到Ubuntu
- 使用
scp
(安全复制)工具传输文件(Windows需安装bash或使用WinSCP):scp user@windows_ip:D:\Backups\YourDB.bak ~/sql_backups/
(3)Ubuntu端还原数据库
- 使用
sqlcmd
执行还原命令(需调整文件路径至Ubuntu目录):RESTORE DATABASE YourDB FROM DISK '/home/user/sql_backups/YourDB.bak' WITH MOVE 'YourDB_Data' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf';
- 验证还原结果:
SELECT Name FROM sys.Databases WHERE Name = 'YourDB';
2. SQL Server Integration Services (SSIS)
- 适用于复杂数据转换(如数据清洗、格式调整)或自动化迁移场景;
- 步骤:
- 在Windows端使用Visual Studio安装「SQL Server Data Tools (SSDT)」;
- 创建SSIS项目,通过「数据流任务」配置源(Windows SQL Server)与目标(Ubuntu SQL Server)连接;
- 设计数据转换流程(如映射字段、过滤数据);
- 部署并执行SSIS包,完成自动化迁移。
3. bcp实用程序(大型数据迁移)
- 适用于大批量数据导入导出(如表格级数据迁移);
- 步骤:
- 在Windows端导出数据到CSV文件:
EXEC master..xp_cmdshell 'bcp YourDB.dbo.YourTable out D:\Exports\YourTable.csv -c -t, -T -S localhost'
- 将CSV文件传输到Ubuntu;
- 在Ubuntu端使用
bcp
导入数据:bcp YourDB.dbo.YourTable in /home/user/Exports/YourTable.csv -c -t, -U SA -P 'YourPassword' -S localhost
- 在Windows端导出数据到CSV文件:
4. 第三方工具(简化操作)
- Navicat for Linux:
- 下载并安装Navicat Linux版;
- 添加源数据库(Windows SQL Server)和目标数据库(Ubuntu SQL Server)连接;
- 使用「数据同步」功能选择要迁移的表,一键完成数据迁移。
- DBConvert: 支持SQL Server与其他数据库(如MySQL、PostgreSQL)的双向迁移,提供图形界面,操作简单。
三、迁移后验证与优化
1. 数据完整性检查
- 对比源数据库与目标数据库的表记录数:
-- 源数据库(Windows) SELECT COUNT(*) FROM YourDB.dbo.YourTable; -- 目标数据库(Ubuntu) SELECT COUNT(*) FROM YourDB.dbo.YourTable;
- 抽样检查关键字段数据是否一致(如
SELECT TOP 10 * FROM YourTable
)。
2. 性能调优
- 调整文件路径权限:确保SQL Server用户对数据目录(
/var/opt/mssql/data/
)有读写权限; - 优化配置参数:根据Ubuntu服务器资源(CPU、内存)调整SQL Server的
max degree of parallelism
(并行度)、memory limit
(内存限制)等参数; - 重建索引:迁移后对大型表重建索引,提升查询性能:
USE YourDB; GO ALTER INDEX ALL ON YourTable REBUILD; GO
3. 常见问题排查
- 连接失败:检查Ubuntu防火墙是否允许1433端口(
sudo ufw allow 1433
); - 权限不足:确保
sqlcmd
使用的账户(如SA)有足够权限; - 文件路径错误:还原时
MOVE
子句的目标路径需指向Ubuntu的有效目录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SQL Server在Ubuntu上的数据迁移指南
本文地址: https://pptw.com/jishu/728012.html