0
如果展開tempdb的節點和去臨時表,你會發現臨時表的名稱有「_ __ _ _ _XXXXX」追加。該部分在哪裏引用?是臨時表創建的內存位置嗎? 謝謝臨時表名稱的後綴是什麼意思?
如果展開tempdb的節點和去臨時表,你會發現臨時表的名稱有「_ __ _ _ _XXXXX」追加。該部分在哪裏引用?是臨時表創建的內存位置嗎? 謝謝臨時表名稱的後綴是什麼意思?
臨時表也是物理表,就像任何其他表一樣。它們只是有點特別,當它們超出範圍時需要自動清理。爲了避免名稱衝突,因爲每個人都希望他們的臨時表被命名爲#tmp
,SQL Server會生成一個僞隨機名稱,以便在tempdb
中創建物理表。這與你對臨時表的引用有關,例如SPID 1234 "#tmp" refers to tempdb.dbo.#tmp___________0000000001CA
。還要注意,即使你可以從另一個會話中看到tempdb.sys.tables中的表,但這並不意味着你可以用正常的方式選擇它,
create table #tmp (a int); insert #tmp values (1),(2);
select * from [#tmp_____________0000000001CA] -- run by creator of #tmp
Results:
a
-
1
2
select * from [#tmp_____________0000000001CA] -- run by another session
Msg 208, Level 16, State 0, Line 1
Invalid object name '#tmp____________0000000001CA'.
沒有內在意義的XXXXX。
謝謝隊友!如果有人能爲這個後綴提出一個意思,我會等待一些回覆。否則,將批准正確。 – user2155565 2013-04-24 05:56:58
你已經得到了「意義」的答案 - 沒有意義。它會自動添加以避免名稱衝突;) – JdMR 2013-04-24 06:10:53