备份重要数据:更新前必须通过sqlcmd或SSMS备份所有关键数据库,防止更新失败导致数据丢失。示例如下:
 sqlcmd -S localhost -U sa -P your_password -Q "BACKUP DATABASE [YourDatabaseName] TO DISK = '/var/opt/mssql/backup/YourDatabaseName.bak'"
 检查当前版本:使用mssql-conf --version确认SQL Server当前版本,为后续更新做准备。
更新系统软件包:运行sudo apt update && sudo apt upgrade更新Debian系统所有软件包至最新版本,确保兼容性。
 安装必要依赖:安装curl、gnupg、apt-transport-https等工具,用于添加Microsoft软件源及验证包完整性。
导入GPG密钥:通过curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg导入密钥,确保软件包来源可信。
 配置软件源:根据Debian版本(如12)添加对应SQL Server源,示例如下:
 echo "deb [signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/debian/12/prod/ stable main" | sudo tee /etc/apt/sources.list.d/mssql-server.list
检查可用更新:运行sudo apt update刷新包列表,sudo apt list --upgradable查看可更新的SQL Server包。
 安装更新:使用sudo apt upgrade mssql-server升级SQL Server主包,或sudo apt install --only-upgrade mssql-server仅升级SQL Server。
 重启服务:更新完成后重启SQL Server服务使变更生效:sudo systemctl restart mssql-server。
 验证更新:再次运行mssql-conf --version确认版本已更新至目标版本。
制定备份计划:采用完全备份+差异备份+事务日志备份的组合策略,完全备份每周1次,差异备份每日1次,事务日志备份每小时1次。
 自动化备份:使用cron定时任务或SQL Server代理创建维护计划,自动执行备份并将备份文件存储至外部存储(如NAS、云存储)。
 备份验证:定期测试备份文件的恢复流程,确保备份有效性。
日志备份与清理:定期备份事务日志(通过BACKUP LOG命令),防止日志文件过度增长;使用DBCC SHRINKFILE命令截断日志,释放磁盘空间。
 调整恢复模式:根据业务需求设置恢复模式(如生产环境用“完整恢复模式”,测试环境用“简单恢复模式”),平衡数据安全性与性能。
资源调整:根据服务器配置调整SQL Server内存参数(如max server memory),避免占用过多系统内存;优化CPU核心数分配(如max degree of parallelism)。
 查询优化:使用EXPLAIN分析慢查询,添加适当索引(如聚集索引、非聚集索引);优化查询语句(如避免SELECT *、减少子查询嵌套)。
 统计信息更新:定期运行UPDATE STATISTICS [TableName]更新表统计信息,帮助查询优化器生成高效执行计划。
应用安全补丁:及时安装Microsoft发布的SQL Server安全补丁,修复已知漏洞;订阅Microsoft安全通知服务,第一时间获取补丁信息。
 权限管理:遵循“最小权限原则”分配用户权限,定期审核用户角色(如sysadmin、db_owner);禁用默认账户(如sa),使用强密码并定期更换。
 防火墙配置:开放SQL Server默认端口(1433),并通过ufw或firewalld限制访问IP,仅允许可信IP连接。
性能监控:使用SQL Server自带的性能监视器(Performance Monitor)、sys.dm_exec_query_stats视图或第三方工具(如Prometheus+Granafa)监控关键指标(CPU使用率、内存占用、磁盘I/O、查询响应时间)。
 日志分析:定期检查SQL Server错误日志(/var/opt/mssql/log/errorlog)和系统日志,识别异常(如连接超时、死锁、权限问题)。
 故障排查:遇到服务故障时,使用systemctl status mssql-server查看服务状态,通过journalctl -u mssql-server查看详细日志;必要时重启服务或回滚更新。