【问题标题】:SQL Server debugging stored procedure using old version of code [duplicate]SQL Server使用旧版本代码调试存储过程[重复]
【发布时间】:2013-08-09 10:23:19
【问题描述】:

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

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

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

【问题讨论】:

  • 不是一个真正的答案,但我不调试 SP,将它的内容复制到一个窗口中,调试它。
  • 是的 - 我通常自己做。这可能是我第一次遇到这种奇怪现象的原因。
  • 我唯一能想到的就是对 sp 本身的某种锁定。找出答案的快速方法可能是尝试从另一个会话中删除它。如果您使用当前连接或新连接打开查询窗口,还可以查看它的不同之处。

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


【解决方案1】:

解决方案:

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

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

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

删除过程 stpMyModifiedProcedure

创建过程 stpMyModifiedProcedure

这也可以...更改将更改存储过程,但不在缓存中...丢弃将更新缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多