tempdb ノードを展開して一時テーブルに移動すると、一時テーブルの名前に " _ __ _ _ _XXXXX" が追加されていることがわかります。その部分はどこを参照していますか?一時テーブルが作成されるメモリの場所ですか? ありがとうございました
質問する
965 次
1 に答える
3
一時テーブルは、他のテーブルと同様に物理テーブルでもあります。それらは少し特殊で、範囲外になると自動クリーンアップを伴います。誰もが自分の一時テーブルに という名前を付けたいと考えているため、名前の競合を避けるために#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に固有の意味はありません。
于 2013-04-24T04:56:18.617 に答える