Saltar al contenido

Tablas temporales locales y globales en SQL Server

Solución:

  • Variables de tabla (DECLARE @t TABLE) son visibles solo para la conexión que la crea y se eliminan cuando finaliza el procedimiento almacenado o por lotes.

  • Mesas temporales locales (CREATE TABLE #t) son visibles solo para la conexión que las crea y se eliminan cuando se cierra la conexión.

  • Tablas temporales globales (CREATE TABLE ##t) son visibles para todos y se eliminan cuando se cierran todas las conexiones que los han hecho referencia.

  • Tablas permanentes tempdb (USE tempdb CREATE TABLE t) son visibles para todos y se eliminan cuando se reinicia el servidor.

Encuentro esta explicación bastante clara (es una copia pura de Technet):

Hay dos tipos de tablas temporales: local y global. Las tablas temporales locales solo son visibles para sus creadores durante la misma conexión a una instancia de SQL Server que cuando se crearon o se hizo referencia a las tablas por primera vez. Las tablas temporales locales se eliminan después de que el usuario se desconecta de la instancia de SQL Server. Las tablas temporales globales son visibles para cualquier usuario y cualquier conexión después de su creación, y se eliminan cuando todos los usuarios que hacen referencia a la tabla se desconectan de la instancia de SQL Server.

Citando libros en línea:

Las tablas temporales locales son visibles solo en la sesión actual; Las tablas temporales globales son visibles para todas las sesiones.

Las tablas temporales se eliminan automáticamente cuando quedan fuera del alcance, a menos que se eliminen explícitamente mediante DROP TABLE:

  • Una tabla temporal local creada en un procedimiento almacenado se quita automáticamente cuando se completa el procedimiento almacenado. La tabla puede ser referenciada por cualquier procedimiento almacenado anidado ejecutado por el procedimiento almacenado que creó la tabla. El proceso que llamó al procedimiento almacenado que creó la tabla no puede hacer referencia a la tabla.
  • Todas las demás tablas temporales locales se eliminan automáticamente al final de la sesión actual.
  • Las tablas temporales globales se eliminan automáticamente cuando finaliza la sesión que creó la tabla y todas las demás tareas dejan de hacer referencia a ellas. La asociación entre una tarea y una tabla se mantiene solo durante la vida de una única instrucción Transact-SQL. Esto significa que se descarta una tabla temporal global cuando se completa la última instrucción Transact-SQL que hacía referencia activa a la tabla cuando finalizó la sesión de creación.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *