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

MS SQL Server Discussion :

Vider une très grosse table [2005]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut Vider une très grosse table
    Bonjour à tous,

    J'ai besoin de votre aide car je suis admin système et je bloque sur un petit soucis :

    J'ai une DB SQL Server 2005 qui a pris de la taille avec la temps et je me retrouve avec une table qui est remplis de 35 Go de données.

    Le support du produit qui utilise cette db ma dit que je pouvais la vider en supprimant le contenus des tables (via l'interface) et de ne pas prendre en compte les avertissements sur les dépendances.

    Mais j'ai deux soucis :
    - Lister le contenus de ces tables prend un temps énorme (des heures car des millions de lignes)
    - Rien qu'en essayant de supprimer une ligne j'obtiens ce message :



    Pouvez-vous m'aider à vider ces tables ?

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Pour vider entièrement la table s'il n'y a pas de contrainte, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRUNCATE TABLE NomDeLaTable
    Ca va supprimer toutes les lignes. lien msdn

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Effectivement la solution du TRUNCATE TABLE est la plus efficace si la table n'est pas référencée.

    Cela étant, le libellé de l'erreur, String or binary data would be truncated, suggère que les lignes sont archivées dans une autre table dont une ou plusieurs colonnes n'a pas la même taille que la même colonne dans la table que vous souhaitez nettoyer.

    Ensuite s'il est long de retrouver des lignes dans cette table, cela n'a rien à voir avec le fait qu'elle contient des millions de lignes, mais probablement à la qualité de la requête, des statistiques de colonne de la table, et de ses index.

    Par exemple, dans l'entreprise où je travaille, une des bases de données pèse 1.6 To, et l'un de ses tables contient un peu plus d'un milliard de lignes, et n'est pas partitionnée ... et on n'a pas de problèmes avec .
    Je ne crois pas qu'une table avec 1 milliard de lignes soit un record

    @++

  4. #4
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    Tout d'abord merci pour vos réponses rapide et claires
    Je suis en train de faire un backup de mon serveur avant de manipuler car je ne suis pas toujours à l'aise avec les DB, je testerai ça en fin de journée.

    Concernant le temps qu'il met à lister les lignes j'ai remarqué que lorsque j'ouvrais le contenu d'une de ces tables, toute la RAM finissait par être utilisée et ensuite il passait au paging file de Windows et remplissait le disque système par la même occasion Une fois SQL management fermé, tout revient à la normale.

    Je test ça dès que possible et je reviens poster ici

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    C'est surtout que SSMS n'est pas vraiment fait pour ouvrir/modifier des tables qui font des millions de lignes. Cet outil peut être pratique en développement pour modifier rapidement une table de quelques dizaines de lignes à la main.

    Le plus long n'est pas pour que le moteur SQL récupérer les lignes, mais bien pour l'IHM de SSMS les afficher dans un joli tableau... A mon avis, c'est cette mise en page qui provoque le comportement que vous indiquez

  6. #6
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    J'ai exécuté la commande TRUNCATE TABLE et j'obtiens le message suivant :



    Problème de dépendance ?

    Merci

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

Discussions similaires

  1. Performances sur très grosse table
    Par CinePhil dans le forum Optimisations
    Réponses: 2
    Dernier message: 17/09/2008, 17h52
  2. [SSIS][2k5] jointure entre très grosse table
    Par RicardMan dans le forum SSIS
    Réponses: 1
    Dernier message: 18/04/2008, 16h54
  3. Optimisations d'une trop grosse table ?
    Par Ouguiya dans le forum Optimisations
    Réponses: 2
    Dernier message: 10/08/2007, 13h47
  4. Trier de trés grosses tables
    Par funckfot dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 07/06/2007, 17h30
  5. Gestion de très grosse table
    Par Arni23 dans le forum Requêtes
    Réponses: 11
    Dernier message: 04/06/2007, 20h41

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