从内存中清除临时表的简单命令

Bob*_*way 1 t-sql sql-server temp-tables

通常,在测试存储过程代码以进行改进或更改请求时,我发现自己将代码块直接复制并粘贴到 Management Stuido 中,调整变量并运行它们。

但是,很多时候代码依赖于存储过程运行期间创建的临时表(而不是表变量)。在正常的操作过程中,当存储过程完成执行时,这些表就会被释放,但是当它们直接在 Management Studio 中运行时,它们显然会保留在内存中。

这意味着我不能在每次调整时重新执行代码,因为它会尝试重新创建表并导致错误。

有时调整代码来避免这种情况很容易,但是当有很多表时,这就有点不切实际了。每次总是将代码复制并粘贴到新的查询窗口中,但这很快就会变得烦人。

有没有什么方法可以简单地从当前会话的内存中清除临时表,以便您可以在每次运行时重新开始?

Tan*_*ner 5

这些注释涵盖了最常用的方法,为了完整起见,这些方法是:

  1. 右键单击查询窗口并转到Connection > Change Connection,导致会话刷新,从而删除临时表
  2. 将 SQL 复制到新窗口具有相同的效果

测试时,我经常在测试窗口顶部放置注释掉的命令,您可以选择并运行(按 F5),如下所示:

/*    
DROP TABLE #TEMP1
DROP TABLE #TEMP2    
*/

SELECT TOP 1 * 
INTO #TEMP1
FROM Users

SELECT TOP 1 * 
INTO #TEMP2
FROM Users
Run Code Online (Sandbox Code Playgroud)

因此,您只需突出显示注释之间的行并运行选定的语句即可。

通常,如果我很高兴整个查询将运行,我只会DROP在末尾添加语句,这样我就可以一遍又一遍地重新运行,除非您想查询表#TEMP