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 :

SHrink Database trop long


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut SHrink Database trop long
    Bonjour,

    J'ai une base qui fait 30 gigas de taille.
    J'ai supprimé une table de ma base qui fait 15 gigas, et pourtant mon fichier mdf fait toujours 30 gigas. (Pourtant AUTO SHRINK est à TRUE)

    J'ai exécuté la commande shrink database sur ma base, et ça fait exactement 2 jours que la requête est en excécution. Elle l'est encore au moment où je vous parle..

    Est ce normal? Y a t i l un moyen pur accélérer le shrink process?


    Merci

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Pour l'info, voici le résultat d'exécution de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GO
    exec sp_spaceused @updateusage = 'true'
    GO
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    database_name		database_size		unallcoaed space
    VENTES			29299.19 MB		13504.53 MB
     
     
    reserved		data			index_size		unused
    15785184 KB	        12865192 KB		2912064 KB		7928 KB

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne peux pas grand chose pour votre schrink database qui semble ne plus s'arreter.
    pour info, autoschrink = true est une tres mauvaise idee qui plombe les performances. quand votre serveur sql aura retrouve ses esprits. commencez par passer cette option à false.
    pourquoi tenez vous absolument à recuperer cet espace ? la base reprendra l'espace perdu au fur et à mesure de sa croissance...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Si vous voulez récupérer de la place, la première des choses à faire est de reconstruire tous les index....
    Ensuite un SHRINK pourra éventuellement porter ses fruits.

    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/ * * * * *

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    reconstruire ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Vous pouvez réorganiser les index pour éviter la défragmentation ou les détruire et les reconstruire suivant vos préconisations d'espace. Dans ce cas là, on utilise l'option REBUILD.

    Avec SQL Serveur 2005, vous pouvez sans doute utiliser un plan de maintenance pour reconstruire vos index.

    Je mettrais quand même un BEMOL, vous gagnerez de l'espace en interne, à l'intérieur du fichier MDF mais le fichier ne sera finalement redimensionné que lors du SCHRINK.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Tout d'abord, est-ce que ta base de données est journalisée ?
    Si tel est le cas, la table que tu as supprimée est dans le fichier log.

    Si tu veux le vider (mais cela vide tout ce qui a été journalisé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BACKUP LOG [MaBase] WITH(NO_LOG)
    Cependant, cela ne libère pas l'espace.

    Pour réduire la tailler de la DB, tu peux utiliser la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DBCC SHRINKDATABASE ([MaBase], TRUNCATEONLY)
    Ceci a pour effet de libérer la place disponible juste après la dernière extention allouée. Cette commande est très rapide.

    Si ce n'est pas suffisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DBCC SHRINKDATABASE ([MaBase], 10)
    Ou 10 est le pourcentage d'espace que vous voulez laisser disponible dans le fichier de la base de données après sa réduction (ou toute autre valeur d'espace libre que vous souhaitez garder)

    Mais cette dernière commande est plutôt lourde, cela dépendant de la taille de la DB et de son activitié.

    Il est également possible de compacter la DB en utilisant les plans de maintenance. Ce genre de manipulation étant généralement planifié la nuit.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Attention toutefois avec la reconstruction des index. Cette opération est journalisée. Sur une base de donnée volumineuse, cela fera quelques gigas de log.

Discussions similaires

  1. Shrink database Trop long
    Par Donpi dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 10/10/2012, 14h17
  2. Mot trop long
    Par Toudy dans le forum ASP
    Réponses: 6
    Dernier message: 28/07/2004, 17h51
  3. Chargement de page trop long
    Par t_o_7_ dans le forum ASP
    Réponses: 2
    Dernier message: 19/09/2003, 18h58
  4. [TComboBox] Contenu trop long pour la zone d'affichage
    Par bebeours dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/09/2003, 16h21
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28

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