您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_recompile

语法


sp_recompile <objname>

参数

<objname>

是当前数据库中表的名称。

示例

示例 1

下次运行使用表 titles 的每个触发器或存储过程时,重新编译该触发器或存储过程:


sp_recompile titles

用法

使用 sp_recompile 时,还存在一些其它注意事项:

  • 编译涉及优化程序通过规范化查询树(存储在 sysprocedures 中)创建查询计划(存储在过程高速缓存中)。只要执行过程或触发器,且在过程高速缓存中找不到可用计划,就会进行编译。在添加索引或对数据库做出影响其统计信息的其它更改时,这些查询计划可能不再高效。通过重新编译对表进行操作的存储过程和触发器可以优化查询以获得最高效率。

    > 注意

    执行 create index 或 update statistics 时,请勿运行 sp_recompile。这些命令会造成较小的模式更改,这会自动重新编译下次执行时引用目标表的存储过程和触发器。

  • sp_recompile 只在当前数据库中查找 <objname>。运行它会导致引用 <objname> 的触发器和存储过程在下一次执行时被重新编译。

  • 不能对系统表使用 sp_recompile。

  • 在 SAP ASE 版本 12.5 和之前的版本中,sp_recompile 会影响您执行的即席查询。SAP ASE 服务器会返回一个模式更改错误(错误号 540)并中止该即席查询。sp_recompile 现在不再影响这样的即席查询,您也不会再看到错误 540。