存储过程依赖对象删除重建后,如何无需重定义重新编译?
无需重新创建存储过程即可恢复其有效性的方法
当然存在无需修改或重新创建存储过程定义的修复方法,以下是两种常用方案:
1. 使用系统存储过程 sp_recompile
执行以下命令,标记目标存储过程需要重新编译:
EXEC sp_recompile 'tst_Proc';
该操作会让SQL Server在下次执行存储过程时自动重新编译它,更新其依赖对象的元数据,从而恢复有效状态。
2. 执行存储过程时添加 WITH RECOMPILE 选项
直接执行存储过程并强制本次执行时重新编译:
EXEC tst_Proc WITH RECOMPILE;
这次执行完成后,存储过程的依赖信息会被更新,后续正常执行时就会使用新的编译计划,存储过程也会回到有效状态。
额外说明:实际上,当你第一次执行处于无效状态的存储过程时,SQL Server会自动尝试重新编译它,但如果希望主动触发修复而不依赖首次执行,上述两种方法更可控。
内容的提问来源于stack exchange,提问作者sha12
相关产品推荐
相关产品推荐

