Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server使用旧版本的代码调试存储过程_Sql_Sql Server_Stored Procedures_Sql Server 2008 R2_Ssms - Fatal编程技术网

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

SQL Server使用旧版本的代码调试存储过程,sql,sql-server,stored-procedures,sql-server-2008-r2,ssms,Sql,Sql Server,Stored Procedures,Sql Server 2008 R2,Ssms,我在SQL Server中有一个存储过程,我正在尝试使用SSMS对其进行调试。以下是我的流程: 更改存储过程并执行 在调试模式下运行存储过程以观察我的更改的效果-这将在SSMS中打开一个用于调试的新选项卡 完成调试会话,更改存储过程并重新执行 如果我不关闭在步骤2中创建的选项卡,那么调试器将使用存储过程的早期版本。这是SSMS中调试的已知问题吗?如果是,是否有解决方法或修复方法?解决方案: 使用“DBCC FREEPROCCACHE”清除过程缓存 例如,释放过程缓存将导致重新编译一条特殊的SQL

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

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

    解决方案:

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

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

    --全部归功于--> 否则你可以

    Drop proc STPMYMODIFIED过程

    创建过程stpmyModifiedProcess


    这也会起作用。。。更改将更改存储过程,但不会更改缓存中的存储过程。。。droppling将更新缓存。

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