0

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

  1. 更改存储过程并执行
  2. 在调试模式下运行存储过程以观察我的更改的效果 - 这会在 SSMS 中打开一个新选项卡以进行调试
  3. 完成调试会话,更改存储过程并重新执行

看来,如果我不关闭在步骤 2 中创建的选项卡,那么调试器将使用以前版本的存储过程。这是在 SSMS 中调试的已知问题吗?如果是,是否有解决方法或解决方法?

4

1 回答 1

2

解决方案:

使用“DBCC FREEPROCCACHE”清除过程缓存。

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

-- 全部归功于 --> Dave Pinal on Cache 否则你可以

删除 proc stpMyModifiedProcedure

创建 proc stpMyModifiedProcedure

这也将起作用...更改将更改 sproc,但不在缓存中... droppling 将更新缓存。

于 2015-02-06T18:01:25.617 回答