2009-03-27 25 views

Respuesta

15

Las tablas temporales locales se destruyen cuando cierra su conexión a SQL Server. No es necesario purgarlos manualmente en circunstancias normales. Si mantiene una conexión persistente, o la agrupación de conexiones, es posible que desee adquirir el hábito de eliminar tablas temporales inmediatamente después de su uso.

Las tablas temporales globales, por otro lado, dado que son visibles para todos los usuarios en una base de datos dada, se destruyen junto con la última conexión que hace referencia a ellas.

+0

Supongo que informar los servicios no sería una conexión persistente, ¿estaría bien? – Jeff

+7

Creo que esto es incorrecto para las tablas temporales globales; Creo que las tablas temporales globales (## MyTempTable) deben ser depuradas, mientras que para las tablas temporales normales (#MyTempTable) lo que dices se aplicaría ... ¿Cierto? –

+0

@FrankV: tienes razón. He aclarado mi respuesta. – vezult

20

A pesar del hecho de que las tablas temporales se eliminan cuando termina una conexión, a menudo se considera una buena práctica eliminar explícitamente dichas tablas para poder realizar una limpieza completa.

Por ejemplo, si su plataforma hace uso de la agrupación de conexiones, es decir, las conexiones nunca se pueden descartar, entonces, ¿sus tablas temporales por lo tanto, todavía existen?

Para comprobar la existencia de una tabla temporal, puede utilizar la siguiente instrucción/comprobación.

if object_id('tempdb..##temptbl') is not null 
begin 
    drop table ##temptbl 
end 
4

En respuesta a la segunda parte de su pregunta, para consultar la lista de tablas para purgar, trate de esta consulta:

SELECT * FROM tempdb..sysobjects 

que listará todas las actuales tablas temporales globales

+0

Gracias, esto es realmente útil. – Contango

Cuestiones relacionadas