Est-ce que SQL Server les purge automatiquement après une durée d'inactivité donnée ou dois-je m'inquiéter de les purger automatiquement? Si oui, comment puis-je rechercher une liste de tables à purger?Suppression de tables temporaires globales (## tempTable) dans SQL Server
Répondre
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.
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
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
Merci, c'est vraiment utile. – Contango
Je suppose que les services de reporting ne seraient pas une connexion persistante, donc je serais OK? – Jeff
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? –
@FrankV: Vous avez raison. J'ai clarifié ma réponse. – vezult