Las mesas temporales locales (comienzan con #) están limitadas a su sesión; otras sesiones, incluso del mismo usuario/cadena de conexión, no pueden verlos. Las reglas para la vida útil dependen de si la tabla temporal local se creó en un procedimiento almacenado:
- Una tabla temporal local que se crea en un procedimiento almacenado se descarta cuando finaliza el procedimiento; otros procedimientos almacenados, o el proceso de llamada, no pueden verlos.
- Otras tablas temporales locales se eliminan cuando finaliza la sesión.
Las tablas temporales globales (que comienzan con ##) se comparten entre sesiones. Se eliminan cuando:
- La sesión que los creó termina
- Y ninguna otra sesión se refiere a ellos
Este comando puede ser útil para ver qué tablas temporales existen:
select TABLE_NAME from tempdb.information_schema.tables
Y esto es útil para descartar tablas temporales si no está seguro de que existan:
if object_id('tempdb..#SoTest') is not null drop table #SoTest
Consulte este artículo de MSDN para obtener más información.