2012-07-04 11 views
7

W moim kodzie serwera, tworzę tabelę temp (o nazwie #temp), wstaw niektóre dane, a następnie usuń tabelę tymczasowych. Jeśli więcej niż 1 użytkowników uruchomiłoby tę sekcję kodu (tworząc tabelę tymczasową) jednocześnie, czy serwer sql 2008 utworzyłby tabelę tymczasową na użytkownika, czy stworzyła 1 globalną tabelę tymczasową? Jeśli jest to jedna tabela, zakładam, że wpadłbym w kłopoty, gdy ta sama tabela zostanie utworzona więcej niż raz?Serwer Sql 2008, są tabele temp unikalne

Odpowiedz

8

Od MSDN:

Można tworzyć lokalne i globalne tabele tymczasowe. Lokalne tymczasowe tabele są widoczne tylko w bieżącej sesji, globalne tabele tymczasowe są widoczne dla wszystkich sesji
...
Jeśli lokalny tabeli tymczasowej jest tworzony w procedurze przechowywanej lub aplikacji, które mogą być wykonywane w tym samym czas przez kilku użytkowników, Aparat baz danych musi być w stanie rozróżnić tabele utworzone przez różnych użytkowników. Aparat baz danych wykonuje to wewnętrznie dołączając sufiks numeryczny do każdej lokalnej tabeli tymczasowej. Pełna nazwa tabeli tymczasowej przechowywanej w tabeli sysobjects w postaci tempdb składa się z nazwy tabeli określonej w instrukcji CREATE TABLE i wygenerowanego przez system przyrostka liczbowego. Aby zezwolić na przyrostek , nazwa_tabeli określona dla lokalnej nazwy tymczasowej nie może przekroczyć 116 znaków.

+2

Również z MSDN: Prefiks lokalne tymczasowe nazwy tabel z pojedynczym znakiem (#table_name) oraz globalnego prefiksu nazwy tabeli tymczasowej z podwójnym numerem znaku (## nazwa_tabeli). – Eminem

Powiązane problemy