SQL Server运维避坑指南:12个真实故障复盘

不合理索引导致查询性能断崖式下跌:某业务库在高峰期频繁超时,排查发现一张高频表缺失关键查询字段的复合索引,且存在大量SELECT + ORDER BY + LIMIT模式,却未覆盖排序字段。添加包含WHERE、ORDER BY、SELECT字段的覆盖索引后,响应时间从8s降至80ms。

误删系统数据库备份历史:DBA执行清理脚本时未限定msdb.dbo.backupset表的时间范围,清空了全部备份记录,导致无法验证最近7天备份有效性。建议始终用WHERE backup_finish_date > DATEADD(day, -30, GETDATE())加条件,并提前备份msdb。

自动增长设置为固定MB而非百分比:某日志文件设为每次增长1GB,磁盘空间紧张时触发数十次连续增长,阻塞所有写入操作近20分钟。应改用“按百分比增长”(如10%)并预分配足够初始大小。

备份路径权限丢失:夜间全备失败但告警被忽略,次日发现备份目录因AD组策略更新导致SQL Server服务账户失去写权限。需将备份作业与权限检查纳入每日巡检项,并启用backup checksum验证完整性。

忘记禁用xp_cmdshell后遗留高危入口:开发曾临时启用该扩展存储过程调试文件操作,上线后未关闭。后续遭扫描利用执行系统命令。生产环境默认应禁用,确需使用须严格限定EXECUTE权限。

统计信息过期引发执行计划退化:一张千万级订单表半年未更新统计信息,优化器持续选择嵌套循环而非哈希连接,CPU飙升至95%。配置自动更新+每周手动UPDATE STATISTICS WITH FULLSCAN关键表可规避。

TempDB文件数配置错误:8核服务器仅配1个tempdb数据文件,出现严重PAGELATCH_UP争用。应按逻辑CPU数配置(≤8核配等于核数,>8核配8个),且各文件大小、增长值严格一致。

使用SA账户运行应用连接:某Web系统直连SQL Server使用sa账号,密码硬编码于配置文件,被反编译泄露。必须为每个应用创建最小权限数据库用户,并启用登录触发器限制非常用IP。

本图基于AI算法,仅供参考

误将大事务拆分为循环单行提交:为“避免锁表”而用循环INSERT每行COMMIT,反而因日志刷盘频率暴增使总耗时延长5倍。大事务应保持原子性,配合Trace Flag 610启用最小日志模式。

AlwaysOn副本同步模式误设为异步:故障切换后丢失最新5分钟数据,业务方才发现可用性组未启用SYNCHRONOUS_COMMIT。关键业务务必验证主/副副本的SECONDARY_ROLE及PRIMARY_ROLE配置一致性。

SQL Agent作业未设置失败通知:死锁清理作业失败长达3天未告警,导致临时表堆积占满tempdb。所有作业必须配置Operator通知,且失败步骤跳转到“Send Email”步骤。

升级后未更新兼容级别:迁移到SQL Server 2022后仍保留120兼容级,无法启用新优化器特性与T-SQL语法,部分查询性能反降。升级完成后立即执行ALTER DATABASE … SET COMPATIBILITY_LEVEL = 160。

由 dawei

【声明】:绥化站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

发表回复