2009-03-27 12 views

Odpowiedz

15

Lokalne tabele tymczasowe są niszczone po zamknięciu połączenia z serwerem SQL. Nie ma potrzeby ręcznego ich usuwania w normalnych okolicznościach. Jeśli utrzymujesz stałe połączenie lub pulę połączeń, możesz chcieć odejść od tymczasowych tabel natychmiast po użyciu.

Globalne tabele tymczasowe, z drugiej strony, ponieważ są widoczne dla wszystkich użytkowników w danej bazie danych, są niszczone wraz z ostatnim połączeniem, które je odsyła.

+0

Zakładam, że usługi raportowania nie będą trwałym połączeniem, więc byłbym w porządku? – Jeff

+7

Uważam, że jest to nieprawidłowe dla globalnych tabel tymczasowych; Uważam, że globalne tabele tymczasowe (## MyTempTable) muszą zostać wyczyszczone, podczas gdy w przypadku normalnych tabel tymczasowych (#MyTempTable) to, co powiedziałbyś, miałoby zastosowanie .... prawda? –

+0

@FrankV: Masz rację. Wyjaśniłem moją odpowiedź. – vezult

20

Pomimo faktu, że tabele tymczasowe są opuszczane po zakończeniu połączenia, często uważa się za dobrą praktykę wyraźne usuwanie takich tabel, aby uzyskać absolutną pewność, że miało miejsce czyszczenie.

Na przykład, jeśli platforma korzysta z puli połączeń, tzn. Połączenia nigdy nie zostaną usunięte, to czy w związku z tym tabele tymczasowe nadal istnieją?

Aby sprawdzić, czy istnieje tabela tymczasowa, można użyć poniższego wyciągu/czeku.

if object_id('tempdb..##temptbl') is not null 
begin 
    drop table ##temptbl 
end 
4

w odpowiedzi na drugą część pytania, aby zapytać o listę tabel, aby oczyścić, spróbuj to zapytanie:

SELECT * FROM tempdb..sysobjects 

którym będą wymienione wszystkie obecne globalne tabele tymczasowe

+0

Dzięki, to jest naprawdę przydatne. – Contango

Powiązane problemy