我在 SQL Server 中有一个存储过程,我正在尝试使用 SSMS 对其进行调试。这是我的过程:
- 更改存储过程并执行
- 在调试模式下运行存储过程以观察我的更改的效果 - 这会在 SSMS 中打开一个新选项卡以进行调试
- 完成调试会话,更改存储过程并重新执行
看来,如果我不关闭在步骤 2 中创建的选项卡,那么调试器将使用以前版本的存储过程。这是在 SSMS 中调试的已知问题吗?如果是,是否有解决方法或解决方法?
我在 SQL Server 中有一个存储过程,我正在尝试使用 SSMS 对其进行调试。这是我的过程:
看来,如果我不关闭在步骤 2 中创建的选项卡,那么调试器将使用以前版本的存储过程。这是在 SSMS 中调试的已知问题吗?如果是,是否有解决方法或解决方法?
解决方案:
使用“DBCC FREEPROCCACHE”清除过程缓存。
例如,释放过程缓存会导致重新编译即席 SQL 语句,而不是从缓存中重用。如果通过 SQL Profiler 观察,可以观察到 DBCC FREEPROCCACHE 开始工作时发生的 Cache Remove 事件。DBCC FREEPROCCACHE 将使优化器缓存在内存中的所有存储过程计划无效,并强制 SQL Server 在下次运行这些过程时编译新计划。
-- 全部归功于 --> Dave Pinal on Cache 否则你可以
删除 proc stpMyModifiedProcedure
创建 proc stpMyModifiedProcedure
这也将起作用...更改将更改 sproc,但不在缓存中... droppling 将更新缓存。