SQLServer对象'name'的定义自编译后已更改

时间:2014-10-07 12:52:05

标签: sql-server-2008 stored-procedures

更新程序并执行后,我收到错误。

  

对象'PROCEDURE NAME'的定义已更改   因为它是编译的。

是否有针对此错误的修复程序?

2 个答案:

答案 0 :(得分:2)

您是在一个窗口中更改过程并执行它吗? 另一?

  

是的,情况确实如此。我在SSMS中更新它并执行一个   调用程序的单独应用程序

您需要结束编辑该过程的会话。这些更改仅在编辑会话中可见,直到提交为止。

答案 1 :(得分:0)

我刚刚遇到了另一种可能发生这种情况的情况,我想在这里提到它,以防它对其他人有帮助。

我有一个“更新后”触发器,其中正在更新datetime [DateModified]列。我不希望此触发器在同一张表上触发其他触发器,所以我在触发器内执行此操作...

disable trigger all on [MyTable];

我当然忽略的是,这也禁用了当前正在运行的触发器,并导致了错误...

The definition of object 'MyTrigger' has changed since it was compiled.

解决方案是显式列出我需要禁用的触发器,而不是使用“全部”。