You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制MS SQL Server 2012重运行修改后的T-SQL脚本时恢复初始状态?

解决SQL Server 2012中脚本修改后重运行异常的问题

这种无规律的脚本运行失败我太熟悉了,尤其是只改了变量大小写这类极小修改时出现的错误,本质上都是会话级状态残留或者执行计划缓存干扰导致的。要强制回到"初始"状态,你可以按以下几种方法操作,从简单到彻底:

1. 最直接:重启查询窗口

每个SQL Server查询窗口对应一个独立的数据库会话,关闭当前窗口再重新打开一个新的窗口,就能完全清除之前会话的所有状态——包括残留的变量、临时对象、会话级执行计划缓存。重新粘贴或编写脚本运行,就是完全干净的初始环境,这是解决这类问题最快的办法。

2. 手动清除当前会话的缓存与状态

如果不想关闭窗口,可以执行以下命令来重置当前会话:

  • 清除当前会话的执行计划缓存:
    DBCC FREESESSIONCACHE;
    
  • 清除当前会话的临时对象(如果有使用临时表):
    DROP TABLE IF EXISTS #YourTempTable;
    -- 如果你用的是全局临时表,替换为 ##YourGlobalTempTable
    
  • 另外,如果你怀疑是变量声明的残留问题,可以在脚本开头加上SET NOCOUNT ON;,并确保每次运行的脚本是完整的批处理(用GO分隔不同批处理),避免之前运行的变量影响当前批处理。

3. 极端情况:终止当前会话

如果上面的方法都不管用,可以直接终止当前会话(注意:这会断开当前窗口的连接):

KILL @@SPID;

执行后,你的查询窗口会提示连接断开,重新连接后就是全新的会话状态。

补充说明

为什么改个大小写会出错?SQL Server默认是不区分标识符大小写的,但在某些情况下(比如执行计划缓存里的旧元数据没有更新,或者会话中残留了旧的变量定义),会出现这种看似无厘头的错误。重置会话后,数据库会重新编译脚本,完全基于当前的脚本内容生成执行计划,自然就解决了问题。

内容的提问来源于stack exchange,提问作者user1459519

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:30:55