IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Nom de table temporaire bizarre [2012]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Par défaut Nom de table temporaire bizarre
    Bonjour,
    Dans ma base de données, je crée une table temporaire #TrtSurface et dans l'explorateur d'objet comme dans le résultat de la requête (SELECT * FROM tempdb.sys.tables), cette table apparaît avec le nom suivant : "#TrtSurface_________________________________________________________________________________________________________000000000015".
    Si je la supprime et que je recrée la table #TrtSurface, elle est de nouveau avec le même nom.
    J'ai d'autres tables temporaires pour lesquelles tout se passe normalement.
    Je ne vois pas d'où cela peut venir (et je ne sais pas quels mots clés utiliser pour chercher dans la littérature !!).
    Merci de votre aide.
    Didou139

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Aucun problème, SQL Server ajoute un unifiant pour permettre de créer une table temporaire avec le même nom en même temps dans plusieurs sessions. Toutes tes tables temporaires locales (un seul #) fonctionnent ainsi

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Didou139 Voir le message
    Bonjour,
    Dans ma base de données, je crée une table temporaire #TrtSurface et dans l'explorateur d'objet comme dans le résultat de la requête (SELECT * FROM tempdb.sys.tables), cette table apparaît avec le nom suivant : "#TrtSurface_________________________________________________________________________________________________________000000000015".
    Si je la supprime et que je recrée la table #TrtSurface, elle est de nouveau avec le même nom.
    J'ai d'autres tables temporaires pour lesquelles tout se passe normalement.
    Je ne vois pas d'où cela peut venir (et je ne sais pas quels mots clés utiliser pour chercher dans la littérature !!).
    Merci de votre aide.
    Didou139
    Toutes les tables temporaires sont créées et stockées dans la base tempdb. Contrairement à une légende urbaine, ce sont bien des tables crées physiquement nécessitant des opérations d'écriture sur disque....
    Il y à 3 types de tables temporaires :
    • locale : la même table peut être créée par différentes sessions. Il faut donc pouvoir isoler un même nom de table pour chacune des différentes sessions. C'est pourquoi contrairement aux autres tables, le nom d'une telle table locale est limité à 116 caractères, les derniers 8 caractères servant identifiant de session selon un algorithme tenu secret... Pour cela, entre le vrai nom déclaré dans le CREATE TABLE #... et cet identifiant, le caractères blanc souligné (undersore) est utilisé pour comblement.
    • globale : le nom est tel que le CREATE TABLE ## l'a spécifié
    • variable table : nom composé d'un dièse et d'un série de 8 caractères hexadécimaux (exemple : #A2DCCCDD) généré pas un algorithme ne devant pas téléscoper les identifiants (et aussi tenu secret !).


    Informations complémentaires disponible dans mon livre :
    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 262
Taille : 105,0 Ko

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Par défaut Nom de table temporaire bizarre
    Bonjour
    Merci Rudib et SqlPro pour vos réponses que je n'avais pas vu, d'où cette réponse tardive !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. [2005] Manipuler une table temporaire (problème de nom)
    Par Sergejack dans le forum Développement
    Réponses: 1
    Dernier message: 09/09/2009, 11h08
  3. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44
  4. Afficher noms des tables d'une base
    Par jeff37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2004, 16h00
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo