Lokale tijdelijke tabellen (begin met #) zijn beperkt tot uw sessie; andere sessies, zelfs van dezelfde gebruiker/verbindingsreeks, kunnen ze niet zien. De regels voor de levensduur hangen af van het feit of de lokale tijdelijke tabel is gemaakt in een opgeslagen procedure:
- Een lokale tijdelijke tabel die is gemaakt in een opgeslagen procedure, wordt verwijderd wanneer de procedure eindigt; andere opgeslagen procedures, of het aanroepende proces, kunnen ze niet zien.
- Andere lokale tijdelijke tabellen worden verwijderd wanneer de sessie eindigt.
Globale tijdelijke tabellen (beginnend met ##) worden gedeeld tussen sessies. Ze worden verwijderd wanneer:
- De sessie waarin ze zijn gemaakt, eindigt
- EN geen enkele andere sessie verwijst naar hen
Dit commando kan handig zijn om te zien welke tijdelijke tabellen er zijn:
select TABLE_NAME from tempdb.information_schema.tables
En dit is handig om tijdelijke tabellen te verwijderen als je niet zeker weet of ze bestaan:
if object_id('tempdb..#SoTest') is not null drop table #SoTest
Zie dit MSDN-artikel voor meer informatie.