Quelle est la différence entre les tables temporaires locales et globales dans SQL Server?
sql-server
temp-tables
global-temp-tables
Andrew Sullivan
la source
la source
Réponses:
Je trouve cette explication assez claire (c'est une copie pure de Technet ):
la source
Les variables de table (
DECLARE @t TABLE
) ne sont visibles que pour la connexion qui la crée et sont supprimées à la fin du lot ou de la procédure stockée.Les tables temporaires locales (
CREATE TABLE #t
) ne sont visibles que par la connexion qui les crée et sont supprimées lorsque la connexion est fermée.Les tables temporaires globales (
CREATE TABLE ##t
) sont visibles de tous et sont supprimées lorsque toutes les connexions qui les ont référencées sont fermées.Les tables permanentes Tempdb (
USE tempdb CREATE TABLE t
) sont visibles de tous et sont supprimées au redémarrage du serveur.la source
1.) Une table temporaire locale n'existe que pendant la durée d'une connexion ou, si elle est définie dans une instruction composée, pendant la durée de l'instruction composée.
2.) Une table temporaire globale reste en permanence dans la base de données, mais les lignes n'existent que dans une connexion donnée. Lorsque la connexion est fermée, les données de la table temporaire globale disparaissent. Cependant, la définition de la table reste avec la base de données pour l'accès lors de la prochaine ouverture de la base de données.
la source
Citant des livres en ligne:
Les tables temporaires locales ne sont visibles que dans la session en cours; les tables temporaires globales sont visibles par toutes les sessions.
Les tables temporaires sont automatiquement supprimées lorsqu'elles sont hors de portée, sauf si elles sont explicitement supprimées à l'aide de DROP TABLE:
la source
Tables temporaires locales : si vous créez des tables temporaires locales, puis ouvrez une autre connexion et essayez la requête, vous obtiendrez l'erreur suivante.
les tables temporaires ne sont accessibles que dans la session qui les a créées.
Tables temporaires globales : Parfois, vous souhaiterez peut-être créer une table temporaire accessible à d'autres connexions. Dans ce cas, vous pouvez utiliser des tables temporaires globales.
Les tables temporaires globales ne sont détruites que lorsque toutes les sessions qui y font référence sont fermées.
la source
Il convient de mentionner qu'il existe également: des tables temporaires globales à portée de base de données (actuellement prises en charge uniquement par Azure SQL Database).
la source
Je n'ai vu aucune réponse montrer aux utilisateurs où nous pouvons trouver une table de température globale. Vous pouvez afficher les tables temporaires locales et globales au même emplacement lors de la navigation dans SSMS. Capture d'écran ci-dessous tirée de ce lien .
Bases de données -> Bases de données système -> tempdb -> Tables temporaires
la source