Lokalne tabele tymczasowe są widoczne tylko dla ich twórców podczas tego samego połączenia z instancją SQL Server na którym zostały utworzone, są usuwane gdy użytkownik odłączy się od instancji.
Tak mniej więcej piszą w BOL, dodatkowo wszyscy wiemy że w ramach tej samej sesji nie można założyć dwóch tabel o takiej samej nazwie.
Niewiadomo jak serwer radzi sobie z rozpoznawaniem, która tabela jest przypisana do którego SPIDu, w skali instancji niepowtarzalność gwarantuje 12 znaków HEX, które są zwiększającym się licznikiem.
Licznik ten zeruje się przy każdym restarcie serwera, ciekawe co się stanie jeżeli w czasie nieprzerwanej pracy serwera założymy więcej niż 281474976710655 tabel tymczasowych, czyli FFFFFFFFFFFF.
Zróbmy sobie mały test
USE tempdb
GO
SELECT @@SPID
CREATE TABLE #a (i INT);
GO
DECLARE @q VARCHAR(max)
SET @q='SELECT @@SPID; CREATE TABLE #a (i INT);
SELECT id ,NAME
FROM tempdb.sys.sysobjects
WHERE xtype =''U'' AND NAME LIKE ''#a%''
'
EXEC (@q);
GO
SELECT id ,NAME
FROM tempdb.sys.sysobjects
WHERE xtype ='U' AND NAME like '#a%'
------
55
------
55
id NAME
----------------------------------
1253579504 #a__...___000000000001
1269579561 #a__...___000000000002
id NAME
----------------------------------
1253579504 #a__...___000000000001
Prosty test pokazuje, że tabela nie jest niszczona po odłączeniu a może być tez podczas jego trwania i w ramach jednej sesji mogą istnieć tabele o takiej samej nazwie.