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