Når du opretter en midlertidig tabel i SQL Server, har du mulighed for at gøre den til en lokal eller global midlertidig tabel.
Her er en hurtig oversigt over de vigtigste forskelle mellem lokale midlertidige tabeller og globale midlertidige tabeller.
Navngivning
- Lokale midlertidige tabellers navne starter med et enkelt taltegn (
#
). For eksempel#MyTable
. - Lokale midlertidige tabeller får også et systemgenereret numerisk suffiks tilføjet til navnet. Dette genereres automatisk af SQL Server. Dette tillader flere sessioner at oprette lokale midlertidige tabeller med samme navn uden at forårsage navnekonflikter. Brugere kan dog stadig forespørge i tabellen uden at skulle kende suffikset.
- Globale midlertidige tabellers navne starter med et dobbelt taltegn (
##
). For eksempel##MyTable
. - Globale midlertidige tabeller er ikke tilføjet et suffiks som med lokale midlertidige tabeller.
Synlighed
- Lokale midlertidige tabeller er kun synlige i den aktuelle session.
- Globale midlertidige tabeller er synlige for alle sessioner.
Levetid
- Lokale midlertidige tabeller slettes automatisk i slutningen af den aktuelle session. En lokal midlertidig tabel, der er oprettet i en lagret procedure, slettes automatisk, når den lagrede procedure er afsluttet. Tabellen kan refereres af alle indlejrede lagrede procedurer, der udføres af den lagrede procedure, der skabte tabellen. Tabellen kan ikke refereres af den proces, der kaldte den lagrede procedure, der oprettede tabellen.
- Globale midlertidige tabeller slettes automatisk, når den session, der oprettede tabellen, slutter, og alle andre opgaver er holdt op med at referere til dem. Tilknytningen mellem en opgave og en tabel opretholdes kun i en enkelt T-SQL-sætnings levetid. Derfor slettes en global midlertidig tabel ved færdiggørelsen af den sidste T-SQL-sætning, der aktivt refererede til tabellen, da oprettelsessessionen sluttede.