SQL Server调试存储过程使用旧版本的代码

时间:2013-08-09 10:23:19

标签: sql sql-server stored-procedures sql-server-2008-r2 ssms

我在SQL Server中有一个存储过程,我正在尝试使用SSMS对其进行调试。这是我的过程:

  1. 更改存储过程并执行
  2. 以调试模式运行存储过程以观察我的更改的效果 - 这将在SSMS中打开一个用于调试的新选项卡
  3. 完成调试会话,更改存储过程并重新执行
  4. 如果我不关闭在步骤2中创建的选项卡,那么调试器将使用先前版本的存储过程。这是SSMS中调试的已知问题,如果是,是否有解决方法或修复它?

1 个答案:

答案 0 :(得分:1)

解决方案:

使用' DBCC FREEPROCCACHE'清除过程缓存。

释放过程高速缓存会导致例如重新编译临时SQL语句而不是从高速缓存中重用。如果通过SQL事件探查器观察,可以看到缓存删除事件发生在DBCC FREEPROCCACHE开始工作时。 DBCC FREEPROCCACHE将使优化器缓存在内存中的所有存储过程计划无效,并强制SQL Server在下次运行这些过程时编译新计划。

- 所有信用 - > Dave Pinal on Cache 否则你可以

  

删除proc stpMyModifiedProcedure

     

创建proc stpMyModifiedProcedure

这也可以...改变将改变sproc,但不会改变缓存... droppling将更新缓存。