1. 准备工作
sqlcmd),用于后续命令行操作;若未安装,可通过以下命令添加仓库并安装:curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
yum install -y mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile
2. 备份源数据库
D:\backups\source_db.bak),点击“确定”执行备份。sqlcmd执行T-SQL命令备份,例如:BACKUP DATABASE [source_db] TO DISK = 'D:\backups\source_db.bak' WITH INIT, STATS = 10;
3. 传输备份文件至目标服务器
使用scp(安全拷贝)或rsync工具将备份文件从源服务器复制到目标CentOS服务器。例如,通过scp命令:
scp username@source_server:/path/to/source_db.bak /tmp/
输入目标服务器密码后,等待文件传输完成。
4. 在目标服务器上还原数据库
/tmp/source_db.bak),点击“确定”。切换至“选项”页,勾选“覆盖现有数据库”(若目标存在同名数据库),确认文件路径(如将数据文件移至/var/opt/mssql/data/source_db.mdf、日志文件移至/var/opt/mssql/data/source_db_log.ldf),最后点击“确定”开始还原。sqlcmd执行还原命令,例如:RESTORE DATABASE [source_db]
FROM DISK = '/tmp/source_db.bak'
WITH MOVE 'source_db' TO '/var/opt/mssql/data/source_db.mdf',
MOVE 'source_db_log' TO '/var/opt/mssql/data/source_db_log.ldf',
REPLACE, RECOVERY;
其中,MOVE子句用于调整文件路径(需根据备份文件中的逻辑文件名修改),REPLACE表示覆盖现有数据库,RECOVERY表示恢复数据库至可用状态。5. 验证数据完整性
sqlcmd执行SELECT name, state_desc FROM sys.databases WHERE name = 'source_db';,确认数据库状态为“ONLINE”。SELECT TOP 10 * FROM dbo.table_name;),对比源数据库中的记录数和内容,确保数据无遗漏或错误。6. 清理与优化
D:\backups\source_db.bak)和目标服务器上的临时文件(如/tmp/source_db.bak),释放存储空间。sqlcmd执行ALTER DATABASE [source_db] SET AUTO_CREATE_STATISTICS ON;启用自动统计信息更新。注意事项
/var/opt/mssql/data/)。sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload