centos

SQL Server在CentOS上的数据迁移指南

小樊
50
2025-09-18 03:51:29
栏目: 云计算

SQL Server在CentOS上的数据迁移指南

一、迁移前准备

1. 确认环境兼容性

确保源SQL Server与目标CentOS服务器上的SQL Server版本兼容(如SQL Server 2017及以上版本支持跨平台迁移);检查两台服务器之间的网络连接,确保可以通过TCP/IP通信(默认端口1433)。

2. 安装必要工具

在目标CentOS服务器上安装SQL Server客户端工具(如sqlcmdbcp)和ODBC驱动,用于数据迁移和连接:

# 添加Microsoft包仓库
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# 安装mssql-tools(包含sqlcmd、bcp)和unixODBC-devel
sudo yum install -y mssql-tools unixODBC-devel
# 配置sqlcmd环境变量(生效当前终端)
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile

3. 准备目标服务器

安装SQL Server实例(若未安装):

# 安装依赖
sudo yum install -y libatomic
# 添加SQL Server仓库(以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
# 开放防火墙端口
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

二、数据迁移步骤

方法1:备份还原法(适用于完整数据库迁移)

1. 备份源数据库

使用SQL Server Management Studio(SSMS)或T-SQL命令备份数据库:

BACKUP DATABASE [YourDatabaseName] 
TO DISK = N'/path/to/source/backup/YourDatabaseName.bak' 
WITH NOFORMAT, NOINIT, NAME = N'YourDatabaseName-Full Backup', STATS = 10;

2. 传输备份文件到目标服务器

使用scp(安全拷贝)将.bak文件从源服务器复制到目标CentOS服务器:

scp /path/to/source/backup/YourDatabaseName.bak user@target_centos_ip:/path/to/target/backup/

3. 还原数据库到目标SQL Server

在目标服务器上使用T-SQL命令还原数据库(需调整文件路径为CentOS下的有效路径):

RESTORE DATABASE [YourDatabaseName] 
FROM DISK = N'/path/to/target/backup/YourDatabaseName.bak' 
WITH FILE = 1, 
MOVE N'YourDatabaseName_Data' TO N'/var/opt/mssql/data/YourDatabaseName.mdf',  -- 数据文件路径
MOVE N'YourDatabaseName_Log' TO N'/var/opt/mssql/data/YourDatabaseName.ldf',    -- 日志文件路径
NOUNLOAD, STATS = 10;

方法2:命令行工具迁移(适用于增量或选择性数据迁移)

1. 使用bcp导出/导入数据

bcp "SELECT * FROM YourDatabaseName.dbo.YourTableName" queryout /path/to/export/YourTableName.csv -c -t, -T -S source_sql_server_ip
bcp YourDatabaseName.dbo.YourTableName in /path/to/export/YourTableName.csv -c -t, -T -S target_centos_ip

-T表示使用可信连接,若用SQL认证需替换为-U username -P password

2. 使用sqlpackage迁移(适用于结构化数据)

sqlpackage是微软提供的工具,支持将数据库导出为.bacpac文件(包含结构和数据),适用于跨平台迁移:

sudo yum install -y https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum install -y sqlpackage
sqlpackage export --server-name source_sql_server_ip --database-name YourDatabaseName --username sa --password YourPassword --output-file /path/to/export/YourDatabaseName.bacpac
sqlpackage import --server-name target_centos_ip --database-name TargetDatabaseName --username sa --password YourPassword --file /path/to/export/YourDatabaseName.bacpac

三、迁移后验证

  1. 检查数据完整性:在目标数据库中执行查询,对比源数据库的记录数(如SELECT COUNT(*) FROM YourTableName)。
  2. 验证应用连接:更新应用程序的连接字符串,指向目标CentOS服务器的SQL Server实例(格式:Server=target_centos_ip,1433;Database=YourDatabaseName;User Id=username;Password=password;),测试应用功能是否正常。
  3. 检查性能:通过SQL Server Profiler或sys.dm_exec_query_stats视图监控查询性能,确保迁移后性能符合预期。

四、注意事项

0
看了该问题的人还看了