CentOS升级SQL Server版本的详细步骤
备份所有数据库
使用mysqldump(MySQL)或sqlcmd(SQL Server)工具对所有业务数据库进行完整备份,包括系统数据库(如master、model、msdb)。例如:
sqlcmd -S localhost -U sa -P YourPassword -Q "BACKUP DATABASE [YourDatabaseName] TO DISK='/var/opt/mssql/backup/YourDatabaseName.bak' WITH INIT"
备份是升级的核心安全措施,可防止数据丢失或升级失败导致的不可逆损坏。
检查系统兼容性
sudo yum update -y
验证应用程序兼容性
确保现有应用程序支持目标SQL Server版本,重点检查:
sp_dboption)。根据目标SQL Server版本,下载并添加对应的Microsoft YUM源文件:
sudo curl -o /etc/yum.repos.d/mssql-server-2022.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
sudo curl -o /etc/yum.repos.d/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
添加源后,执行sudo yum repolist确认源已成功注册。
执行升级命令
使用yum的upgrade命令升级现有SQL Server实例,yum会自动处理依赖关系并替换旧版本文件:
sudo yum upgrade -y mssql-server
升级过程中,系统会提示确认操作,输入y继续。升级完成后,SQL Server服务会自动重启。
验证升级结果
sudo systemctl status mssql-server
若显示active (running),说明服务已正常启动。sqlcmd连接到实例,执行以下命令:sqlcmd -S localhost -U sa -P YourPassword -Q "SELECT @@VERSION"
输出应显示目标版本信息(如Microsoft SQL Server 2022 (RTM) - 16.0.1000.6)。升级SQL Server实例后,需将用户数据库的兼容级别调整为目标版本的对应级别,以确保数据库功能正常:
160(对应16.0版本)。150(对应15.0版本)。执行以下命令修改兼容级别(以YourDatabaseName为例):
sqlcmd -S localhost -U sa -P YourPassword -Q "ALTER DATABASE [YourDatabaseName] SET COMPATIBILITY_LEVEL = 160;"
注意:升级后建议先测试数据库功能(如存储过程、查询性能),再调整生产环境的兼容级别。
使用DBCC CHECKDB命令检查数据库的物理和逻辑完整性,确保升级过程中未损坏数据:
sqlcmd -S localhost -U sa -P YourPassword -Q "DBCC CHECKDB ([YourDatabaseName]) WITH NO_INFOMSGS, ALL_ERRORMSGS;"
若输出中无错误信息(CHECKDB found 0 allocation errors and 0 consistency errors),说明数据库完整性良好。
依赖包缺失
若升级过程中提示缺少依赖(如openssl、libcurl),可通过yum安装对应包:
sudo yum install -y openssl libcurl
安装完成后重新执行升级命令。
升级失败回滚
若升级失败,可通过yum history查看操作记录并回滚:
sudo yum history list mssql-server
sudo yum history undo <transaction_id>
回滚会将SQL Server恢复至升级前的版本。
兼容性问题
若升级后应用程序出现功能异常(如存储过程报错),可暂时降低数据库兼容级别至旧版本(如150),待应用程序适配后再提升。
通过以上步骤,可在CentOS系统上安全、顺利地升级SQL Server版本。升级前务必做好备份和兼容性检查,避免数据丢失或业务中断。