如何在CentOS上升级SQL Server
升级SQL Server至新版本需遵循严格的流程,以确保数据安全、系统稳定及功能兼容。以下是详细操作步骤及注意事项:
备份所有数据库
升级前必须对所有用户数据库及系统数据库(如master、msdb)进行完整备份,可使用BACKUP DATABASE命令或SQL Server Management Studio(SSMS)完成。例如:
BACKUP DATABASE [YourDatabaseName] TO DISK = '/var/opt/mssql/backup/YourDatabaseName.bak' WITH INIT;
备份是防止升级过程中数据丢失的关键措施。
检查版本兼容性
验证应用程序兼容性
确保现有应用程序支持新版本SQL Server的功能(如新增的T-SQL语法、存储过程变更),避免升级后出现功能异常。
根据目标版本下载对应的Microsoft Yum源文件,替换旧源以获取最新版本的安装包:
sudo curl -o /etc/yum.repos.d/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
sudo curl -o /etc/yum.repos.d/mssql-server-2022.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
添加源后,执行sudo yum clean all清除缓存。使用yum命令安装新版本(会自动覆盖旧版本的核心组件,但保留数据库文件):
sudo yum install -y mssql-server
安装完成后,系统会提示是否保留现有数据库文件(默认保留)。
若为新安装,需运行mssql-conf setup初始化数据库;若为升级,此步骤会自动保留原有配置(如SA密码、实例名称):
sudo /opt/mssql/bin/mssql-conf setup
按照提示设置SA账户密码(需符合复杂度要求)及SQL Server版本(如“Developer”“Enterprise”)。
安装完成后,需将现有数据库的兼容级别调整为目标版本对应的级别,使数据库使用新版本的功能:
-- 例如,升级至SQL Server 2022(兼容级别150)
USE [master];
GO
ALTER DATABASE [YourDatabaseName] SET COMPATIBILITY_LEVEL = 150;
GO
建议逐个数据库执行此操作,避免遗漏。
检查SQL Server服务状态:
sudo systemctl status mssql-server
确认服务状态为“active (running)”。
连接数据库验证版本:
使用sqlcmd工具连接SQL Server,执行以下命令查看版本信息:
sqlcmd -S localhost -U sa -P YourPassword
1> SELECT @@VERSION;
2> GO
输出应显示目标版本(如“Microsoft SQL Server 2022 (RTM) - 16.0.1000.6”)。
检查数据库完整性:
对每个数据库执行DBCC CHECKDB,确保数据未损坏:
USE [YourDatabaseName];
GO
DBCC CHECKDB;
GO
若无错误,说明数据库升级成功。
测试应用程序:
让应用程序连接升级后的SQL Server,验证所有功能(如查询、存储过程、触发器)是否正常。
监控性能:
升级后监控SQL Server性能(如CPU、内存、磁盘IO),确保新版本运行稳定。
清理旧源:
若不再需要旧版本,可删除旧Yum源文件(如mssql-server-old.repo),避免干扰后续管理。
注意事项:
/var/opt/mssql/log/目录下的日志文件定位问题。