2013-10-03 60 views
0

我知道#temp是臨時的。表僅對特定會話有效。但是如果我在兩個不同的會話中定義#temp,並且同時運行它們會產生衝突。如果沒有,那麼這些表實際上是如何存儲在內存中的。和## Temp有什麼不同?#Temp存儲在哪裏?或#temp如何存儲

回答

1

CREATE TABLE

存儲在sysobjects表 在tempdb中由在CREATE TABLE 語句並指定表名的臨時表的全名系統生成的數字後綴。

所以它存儲在tempdb中。

Temporary Tables in SQL Server

臨時表和表變量

而且在tempdb 數據庫中創建

+0

好吧,這意味着即使我用相同的名稱調用這些表,系統是通過不同的名稱來標識它們嗎? –

+0

查看http://www.sqlteam.com/article/temporary-tables –

2

與單#臨時表是「本地」,而那些帶有雙##是「全球」。

一旦定義它們的存儲過程完成,本地節點將退出範圍。

全局的可以由其他用戶使用,也可以由同一個用戶使用不同的存儲過程,也可以由同一過程的多個調用使用。只有當引用它們的最後一個用戶不再引用它們時,即在最後一個存儲過程完成後,它們纔會被刪除。

全部存儲在tempdb數據庫中;沒有在「記憶」中。