2012-07-04 20 views
7

Nel mio codice server, creo una tabella temporanea (denominata #temp), inserisco alcuni dati e quindi elimino la tabella temporanea. Se più di 1 utenti dovessero eseguire contemporaneamente questa sezione del codice (creazione della tabella temporanea), sql server 2008 creerebbe una tabella temporanea per utente o creerebbe 1 tabella temporanea 'globale'? Se la sua unica tabella, presumo che correrei nei guai quando la stessa tabella viene creata più di una volta?Sql server 2008, sono tabelle temporanee univoche

risposta

8

Da MSDN:

È possibile creare tabelle temporanee locali e globali. Locali temporanei tabelle sono visibili solo nella sessione corrente, e globali temporanei tabelle sono visibili a tutte le sessioni
...
Se una tabella temporanea locale viene creato in una stored procedure o applicazione che può essere eseguito allo stesso tempo di diversi utenti, , il Motore di database deve essere in grado di distinguere le tabelle create da i diversi utenti. Il Motore di database esegue questa operazione internamente con aggiungendo un suffisso numerico a ciascun nome di tabella temporanea locale. Il nome completo di una tabella temporanea come memorizzato nella tabella sysobjects in tempdb è costituito dal nome tabella specificato nell'istruzione CREATE TABLE e dal suffisso numerico generato dal sistema. Per consentire il suffisso , nome_tabella specificato per un nome temporaneo locale non può superare 116 caratteri.

+2

anche da MSDN: Prefisso nomi locali tabella temporanea con single sign numero (#table_name), e prefisso globale nomi di tabella temporanea con un numero doppio segno (## nome_tabella). – Eminem

Problemi correlati