在CentOS上进行SQL Server迁移,可参考以下方案:
安装SQL Server
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
sudo yum install -y mssql-server mssql-tools unixODBC-devel
sudo /opt/mssql/bin/mssql-conf setup
配置网络与防火墙
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
备份源数据库
使用SQL Server Management Studio(SSMS)在源服务器生成.bak
文件,或通过命令行:
BACKUP DATABASE [源数据库名] TO DISK = '/path/to/backup.bak'
还原到目标服务器
将.bak
文件复制到目标CentOS服务器,执行:
RESTORE DATABASE [目标数据库名] FROM DISK = '/path/to/backup.bak'
使用sqlpackage
工具(推荐,支持BACPAC格式)
sudo yum install -y mssql-tools
sqlpackage export -ServerName <源服务器IP> -DatabaseName <源库名> -Username <用户名> -Password <密码> -OutputFile /path/to/export.bacpac
sqlpackage import -ServerName <目标服务器IP> -DatabaseName <目标库名> -Username <用户名> -Password <密码> -File /path/to/export.bacpac
使用bcp
工具(适合批量数据迁移)
bcp <源数据库名>.<架构名>.<表名> out /path/to/data.csv -c -t, -S <源服务器IP> -U <用户名> -P <密码>
bcp <目标数据库名>.<架构名>.<表名> in /path/to/data.csv -c -t, -S <目标服务器IP> -U <用户名> -P <密码>
数据一致性校验
对比源与目标数据库的表记录数、关键字段值,可使用sqlcmd
执行查询:
sqlcmd -S <服务器IP> -U <用户名> -P <密码> -Q "SELECT COUNT(*) FROM <表名>"
性能优化
mssql-conf
配置)。sqlpackage
或SSMA工具。