När du skapar en temporär tabell i SQL Server har du möjlighet att göra den till en lokal eller global temporär tabell.
Här är en snabb översikt över de viktigaste skillnaderna mellan lokala temporära tabeller och globala temporära tabeller.
Namngivning
- Lokala temporära tabellers namn börjar med ett enda nummertecken (
#
). Till exempel#MyTable
. - Lokala temporära tabeller får också ett systemgenererat numeriskt suffix som läggs till namnet. Detta genereras automatiskt av SQL Server. Detta tillåter flera sessioner att skapa lokala temporära tabeller med samma namn utan att orsaka namnkonflikter. Användare kan dock fortfarande fråga tabellen utan att behöva känna till suffixet.
- Globala temporära tabellers namn börjar med ett dubbelt nummertecken (
##
). Till exempel,##MyTable
. - Globala temporära tabeller är inte läggs till med ett suffix som med lokala temporära tabeller.
Synlighet
- Lokala tillfälliga tabeller är endast synliga i den aktuella sessionen.
- Globala temporära tabeller är synliga för alla sessioner.
Livslängd
- Lokala tillfälliga tabeller tas bort automatiskt i slutet av den aktuella sessionen. En lokal temporär tabell skapad i en lagrad procedur tas bort automatiskt när den lagrade proceduren är klar. Tabellen kan refereras av alla kapslade lagrade procedurer som exekveras av den lagrade proceduren som skapade tabellen. Tabellen kan inte refereras av den process som anropade den lagrade proceduren som skapade tabellen.
- Globala temporära tabeller tas bort automatiskt när sessionen som skapade tabellen slutar och alla andra uppgifter har slutat referera till dem. Sambandet mellan en uppgift och en tabell bibehålls endast under hela livet av en enskild T-SQL-sats. Därför tas en global temporär tabell bort vid slutförandet av den senaste T-SQL-satsen som aktivt refererade till tabellen när skapandesessionen avslutades.