统计信息维护计划尝试更新不存在的表统计信息问题咨询
遇到这种情况很常见,我来帮你拆解几个最可能的原因,以及对应的排查和解决步骤:
维护计划基于已删除的表创建,未同步更新
这是最大概率的情况:之前你的数据库里确实存在[dbo].[ABC]表,当时创建维护计划时把更新它的统计信息加入了任务列表,但后来表被删除后,维护计划没有被相应修改,导致每次执行时都尝试对不存在的表执行UPDATE STATISTICS操作。维护计划任务包含硬编码或错误的对象引用
如果你的维护计划是自定义脚本(而非SQL Server自带维护向导生成的通用任务),可能脚本里硬编码了[dbo].[ABC],但后续表被删除后脚本没被清理。另外,要是用了动态SQL生成统计更新语句,也可能因为逻辑错误(比如读取了过时的系统视图数据)导致引用了已删除的表。数据库上下文配置错误
检查维护计划的执行数据库:有没有可能计划是针对某个你没排查到的数据库创建的?比如你检查了所有业务库,但计划实际指向的是某个测试库、备份恢复的库,甚至是master库?或者脚本里没有指定USE [目标库],导致默认连接到了错误的数据库,而那个库确实没有ABC表。误引用临时表或已清理的系统对象
虽然可能性较低,但如果之前有临时表#ABC或者全局临时表##ABC,维护计划里误写成了[dbo].[ABC],或者某个系统表曾被命名为ABC(这种情况极少见),也会导致这个错误。
解决步骤建议:
查看维护计划的具体任务内容
打开SQL Server代理 → 找到对应的维护计划 → 双击查看任务详情:- 如果是“更新统计信息”的向导任务,检查“选择表和视图”的配置,确认是否还包含
[dbo].[ABC],如果有,移除它。 - 如果是自定义T-SQL任务,直接查看脚本内容,删掉
UPDATE STATISTICS [dbo].[ABC] WITH FULLSCAN这行,或者修改为正确的对象。
- 如果是“更新统计信息”的向导任务,检查“选择表和视图”的配置,确认是否还包含
验证维护计划的数据库连接目标
在维护计划的任务属性里,检查“连接”选项卡中的目标数据库,确认是不是你已经排查过的数据库,避免遗漏了某个库。回溯表的历史存在情况
可以通过数据库的事务日志(如果日志还保留的话)或者历史备份,确认[dbo].[ABC]是否曾经存在、何时被删除,这样能彻底理清问题根源,避免后续再出现类似的维护计划残留问题。
内容的提问来源于stack exchange,提问作者Kumar Rao

