2009-03-27 6 views

Répondre

15

Les tables temporaires locales sont détruites lorsque vous fermez votre connexion à SQL Server. Il n'est pas nécessaire de les purger manuellement dans des circonstances normales. Si vous maintenez une connexion persistante ou un regroupement de connexions, vous pouvez prendre l'habitude de supprimer des tables temporaires immédiatement après leur utilisation. D'autre part, les tables temporaires globales, puisqu'elles sont visibles par tous les utilisateurs dans une base de données donnée, sont détruites avec la dernière connexion qui les référence.

+0

Je suppose que les services de reporting ne seraient pas une connexion persistante, donc je serais OK? – Jeff

+7

Je crois que ceci est incorrect pour les tables temporaires globales; Je crois que les tables temporaires globales (## MyTempTable) doivent être purgées alors que pour les tables temporaires normales (#MyTempTable) ce que vous avez dit s'appliquerait .... Pas vrai? –

+0

@FrankV: Vous avez raison. J'ai clarifié ma réponse. – vezult

20

Malgré le fait que les tables temporaires soient supprimées lorsqu'une connexion se termine, il est souvent considéré comme une bonne pratique de supprimer explicitement de telles tables afin d'assurer un nettoyage absolument certain. Par exemple, si votre plate-forme utilise le regroupement de connexions, c'est-à-dire que les connexions ne peuvent jamais être supprimées, vos tables temporaires existent-elles également?

Afin de vérifier l'existence d'une table temporaire, vous pouvez utiliser l'instruction/vérification suivante.

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

En réponse à la deuxième partie de votre question, à interroger la liste des tables de purge, essayez cette requête:

SELECT * FROM tempdb..sysobjects 

qui liste toutes les tables temporaires globales actuelles

+0

Merci, c'est vraiment utile. – Contango