我知道#temp是临时的。表仅对特定会话有效。但如果我在两个不同的会话中定义#temp,并同时运行它们就会发生冲突。如果没有,那么这些表实际上是如何存储在内存中的。那与## Temp ?????
有何不同?答案 0 :(得分:2)
具有单个#的临时表是" local",而具有双##的临时表是" global"。
一旦完成定义它们的存储过程,本地将退出范围。
全局版本可以由其他用户使用,也可以由来自不同存储过程的同一用户使用,也可以由同一过程的多次调用使用。只有在引用它们的最后一个用户不再引用它们之后,即在最后一次存储过程完成后,它们才会被删除。
全部存储在tempdb数据库中; "记忆"中没有。
答案 1 :(得分:1)
存储在sysobjects表中的临时表的全名 tempdb 中的内容由CREATE TABLE中指定的表名组成 语句和系统生成的数字后缀。
因此它存储在tempdb中。
同样来自Temporary Tables in SQL Server
临时表和表变量在TempDB中创建 数据库