【发布时间】:2013-10-03 04:34:26
【问题描述】:
我知道#temp 是临时的。表仅对特定会话有效。但是如果我在两个不同的会话中定义#temp,并同时运行它们会发生冲突。如果不是,那么这些表实际上是如何存储在内存中的。这和##Temp 有什么区别??????
【问题讨论】:
标签: sql sql-server temp
我知道#temp 是临时的。表仅对特定会话有效。但是如果我在两个不同的会话中定义#temp,并同时运行它们会发生冲突。如果不是,那么这些表实际上是如何存储在内存中的。这和##Temp 有什么区别??????
【问题讨论】:
标签: sql sql-server temp
带有单个 # 的临时表是“本地的”,而带有双 ## 的临时表是“全局的”。
一旦定义它们的存储过程完成,本地的将退出范围。
全局变量可以被其他用户使用,或者被不同存储过程的同一用户使用,或者被同一过程的多次调用使用。只有在最后一个引用它们的用户不再引用它们之后,它们才会被删除,即在最后一个存储过程完成之后。
全部存储在 tempdb 数据库中; “记忆”中没有。
【讨论】:
存储在 sysobjects 表中的临时表的全名 tempdb 由 CREATE TABLE 中指定的表名组成 语句和系统生成的数字后缀。
所以它存储在 tempdb 中。
同样来自Temporary Tables in SQL Server
在 TempDB 中创建临时表和表变量 数据库
【讨论】: