1. 准备工作:安装SQL Server on CentOS
在目标CentOS服务器上安装SQL Server是迁移的基础。首先安装必要依赖包:sudo yum install -y libatomic;然后添加SQL Server官方YUM仓库(以2022版为例):sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo;接着安装SQL Server:sudo yum install -y mssql-server;运行配置脚本设置SA密码及实例参数:sudo /opt/mssql/bin/mssql-conf setup;最后启动服务并设置开机自启:sudo systemctl start mssql-server、sudo systemctl enable mssql-server。若需通过命令行工具操作,还需安装mssql-tools:添加工具仓库curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo,然后执行sudo yum install -y mssql-tools unixODBC-devel,并将工具路径加入环境变量(echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile,执行source ~/.bash_profile生效)。
2. 备份源数据库(Windows SQL Server)
使用SQL Server Management Studio(SSMS)连接源Windows SQL Server实例,右键待迁移数据库→选择“任务”→“备份”,在“目标”栏添加备份路径(如D:\SQLBackups\SourceDB.bak),设置备份类型为“完整”,点击“确定”生成.bak备份文件。
3. 迁移备份文件至CentOS
通过安全文件传输工具(如WinSCP、scp)将源服务器上的.bak备份文件复制到CentOS目标服务器。例如,使用scp命令:scp /path/to/SourceDB.bak centos_user@centos_ip:/var/opt/mssql/backup/(需确保目标目录存在且有写入权限)。
4. 还原数据库至CentOS SQL Server
在CentOS上使用sqlcmd工具执行还原命令。首先进入sqlcmd交互界面:/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password';然后执行还原语句(需替换逻辑文件名,可通过RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/SourceDB.bak'查询):
RESTORE DATABASE TargetDB
FROM DISK = '/var/opt/mssql/backup/SourceDB.bak'
WITH
MOVE 'SourceDB_Data' TO '/var/opt/mssql/data/TargetDB.mdf', -- 替换为源数据库的逻辑数据文件名
MOVE 'SourceDB_Log' TO '/var/opt/mssql/data/TargetDB_log.ldf', -- 替换为源数据库的逻辑日志文件名
REPLACE, RECOVERY, STATS = 10; -- REPLACE覆盖同名数据库,RECOVERY恢复数据库可用,STATS显示进度
GO
执行完成后,输入QUIT退出sqlcmd。
5. 验证数据完整性
还原完成后,通过SSMS或sqlcmd连接CentOS上的SQL Server实例,执行以下操作验证数据:
SELECT name FROM sys.databases WHERE name = 'TargetDB';USE TargetDB; SELECT COUNT(1) AS RowCount FROM YourTableName;(替换为实际表名)6. 配置网络与安全(可选但重要)
确保CentOS服务器防火墙允许SQL Server端口(默认1433)的入站流量:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
若需更高安全性,可配置SSL加密(参考Microsoft官方文档)、限制访问IP或使用VPN连接。
7. 迁移后续操作(可选)
.sqlpackage文件夹(路径如C:\Users\YourUser\.sqlpackage),复制到CentOS对应用户目录下。