Le tabelle temporanee locali (iniziano con #) sono limitate alla tua sessione; altre sessioni, anche dallo stesso utente/stringa di connessione, non possono vederle. Le regole per la durata dipendono dal fatto che la tabella temporanea locale sia stata creata in una stored procedure:
- Una tabella temporanea locale creata in una procedura memorizzata viene eliminata al termine della procedura; altre stored procedure o il processo chiamante non possono vederle.
- Altre tabelle temporanee locali vengono eliminate al termine della sessione.
Le tabelle temporanee globali (iniziano con ##) sono condivise tra le sessioni. Vengono eliminati quando:
- La sessione che li ha creati termina
- E nessun'altra sessione si riferisce a loro
Questo comando può essere utile per vedere quali tabelle temporanee esistono:
select TABLE_NAME from tempdb.information_schema.tables
E questo è utile per eliminare le tabelle temporanee se non sei sicuro che esistano:
if object_id('tempdb..#SoTest') is not null drop table #SoTest
Per ulteriori informazioni, vedere questo articolo MSDN.