sql >> Base de Datos >  >> RDS >> Sqlserver

Diferencia entre tablas temporales locales y globales en SQL Server

Cuando crea una tabla temporal en SQL Server, tiene la opción de convertirla en una tabla temporal local o global.

Aquí hay un resumen rápido de las principales diferencias entre las tablas temporales locales y las tablas temporales globales.

Nombramiento

  • Los nombres de las tablas temporales locales comienzan con un solo signo de número (# ). Por ejemplo, #MyTable .
  • Las tablas temporales locales también obtienen un sufijo numérico generado por el sistema adjunto al nombre. Esto es generado automáticamente por SQL Server. Esto permite que varias sesiones creen tablas temporales locales con el mismo nombre sin causar conflictos de nombres. Sin embargo, los usuarios aún pueden consultar la tabla sin tener que saber el sufijo.
  • Los nombres de las tablas temporales globales comienzan con un signo de número doble (## ). Por ejemplo, ##MyTable .
  • Las tablas temporales globales no adjunto con un sufijo como con las tablas temporales locales.

Visibilidad

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

Vida útil

  • Las tablas temporales locales se eliminan automáticamente al final de la sesión actual. Una tabla temporal local creada en un procedimiento almacenado se elimina automáticamente cuando finaliza el procedimiento almacenado. Cualquier procedimiento almacenado anidado ejecutado por el procedimiento almacenado que creó la tabla puede hacer referencia a la tabla. El proceso que llamó al procedimiento almacenado que creó la tabla no puede hacer referencia a la tabla.
  • Las tablas temporales globales se descartan 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 sola instrucción T-SQL. Por lo tanto, una tabla temporal global se elimina al finalizar la última instrucción T-SQL que hacía referencia activa a la tabla cuando finalizó la sesión de creación.