删除存储过程然后重新创建而不仅仅是改变它们有什么好处

时间:2018-05-17 07:42:42

标签: sql-server stored-procedures

我的前任经理可能误导我应该删除商店程序然后重新创建它而不是仅仅改变,因为这可以确保它不被缓存。这有什么道理吗?

2 个答案:

答案 0 :(得分:1)

您不必丢弃并重新创建它,您可以安全地更改SP。您还可以运行sp_recompile以强制SQL Server重新编译SP,并sp_refreshsqlmodule更新其元数据。

SQL Server会在执行此操作时自动重新编译触发器,视图和SP。)

删除和重新创建对象的副作用:

  • 对象的object_id将改变
  • 架构绑定可能会阻止您丢弃SP而不删除/更改所有依赖对象
  • 特定于对象授予的权限将丢失(您必须再次向用户授予权限)。仅当特定于对象
  • 授予/拒绝权限时,此选项才适用
  • 将触发不同的DDL触发器
  • ...

答案 1 :(得分:0)

执行存储过程时,它将始终运行查询,因此不会缓存查询结果,但会缓存执行计划和索引。因此,删除存储过程并重新创建它而不是缓存它是有意义的。因此,当您更改存储过程时,可能会弃用编译查询所带来的所有优化,但更改后的存储过程应该产生您期望的结果,前提是您在更改它时没有出错。