Suppression de Tables temporaires globales (##tempTable) dans SQL Server

est-ce que SQL server les élimine automatiquement après une certaine période d'inactivité ou dois-je m'inquiéter de les purger automatiquement? Si oui, comment puis-je demander une liste de tables à purger?

18
demandé sur Jeff Atwood 2009-03-27 07:14:18

3 réponses

les tables temporaires locales sont détruites lorsque vous fermez votre connexion au serveur SQL. Il n'est pas nécessaire de purger manuellement eux dans des circonstances normales. Si vous maintenez une connexion persistante, ou le regroupement de connexion, vous pouvez obtenir dans l'habitude de laisser tomber les tables temporaires immédiatement après l'utilisation.

les tables temporaires globales, d'autre part, 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 renvoie ils.

15
répondu vezult 2012-05-11 14:51:48

en dépit du fait que les tables temporaires sont abandonnées quand une connexion se termine, il est souvent considéré comme une bonne pratique de supprimer explicitement de telles tables afin d'être absolument certain que le nettoyage a eu lieu.

par exemple, si votre plate-forme utilise la mise en commun des connexions, c'est-à-dire que les connexions ne peuvent jamais être supprimées, vos tables temporaires existent-elles encore?

afin de vérifier l'existence d'une table temporaire, vous pouvez utiliser le déclaration suivante/vérifier.

if object_id('tempdb..##temptbl') is not null
begin
    drop table ##temptbl
end
22
répondu John Sansom 2009-03-27 05:58:04

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

SELECT * FROM tempdb..sysobjects

Qui liste toutes les tables temporaires globales

4
répondu PaulStock 2011-04-25 14:46:25