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 :

Lecture de la taille réelle du fichier .mdf


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 107
    Par défaut Lecture de la taille réelle du fichier .mdf
    Des appareils autonomes avec une base de données MSDE sont utilisés pour recueillir un certain nombre de données par jour. La base de données MSDE est limitée à 2 Go de données. On doit donc surveiller la croissance de la taille de la base de données afin de procéder à une "purgation" automatique des données en supprimant les données plus anciennes, lorsque la taille des données se rapprochera de la limite.

    J'ai effectué un petit test sur mon poste, avec limite de taille réduite afin d'étudier le comportement. Dans Enterprise Manager, j'ai configuré le fichier de données de la façon suivante:

    Propriétés de la base de données/Fichiers de données:
    Croissance de fichier = 1 Mo
    Limiter la croissance du fichier à 35 Mo.

    Lorsque la base de données est vide, le fichier contient 27 Mo de données. Lorsque la base de données se remplit, l'augmentation de la taille semble se faire de manière non linéaire, i.e. vers l'approche de la limite de la taille max., on constate une indication régulière de 1 Mo jusqu'à saturation.

    Lorsque la base de données est pleine et que je supprime un certain nombre de données si j'exécute: sp_helpfile ou: sp_spaceused ça indique toujours la même quantité de données que lorsque la base de données était pleine, soit 35 Mo., même si après chaque suppression j'exécute: DBCC SHRINKFILE (MaBase, TRUNCATEONLY) , ça donne le même résultat. Même chose avec: DBCC SHRINKDATABASE (MaBase_Data, TRUNCATEONLY)

    Ce n'est que si j'exécute DBCC SHRINKDATABASE (MaBase) plusieurs fois de suite qu'il indiquera un changement de taille. Concernant le log (et non les données), j'ai lu qu'il faut effectuer cette commande une douzaine de fois pour que le VLF (Virtual Log Files) se déplace...et qu'on puisse relire la taille réelle.

    Y a-t-il un moyen sûr d'obtenir la taille réelle des données dès qu'il y a suppression ou ajout ?
    Sinon, auriez-vous d'autres idées ?

    Merci à l'avance pour toute aide!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Avant d'utiliser sp_spaceused, exécute la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC UPDATEUSAGE (dbname)
    Avec dbname le nom de ta base. Cela corrige les incohérances de la table sysindexes qui sont la cause de mauvaises remontées d'informations de la procédure sp_spaceused.

    De plus, la taille du fichier, vu du système, ne correspond pas aux données, mais à la quantité d'espace disque que SQL Server a réservé au système. Enfin, lors de suppression de données, cet espace n'est pas restitué au système.

    Si tes bases ne sont pas accédées en permanence, tu peux activer AUTO_SHRINK :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER DATABASE dbname
    SET AUTO_SHRINK ON
    GO
    Cela permet à ta base de libérer l'espace libre régulièrement. Sinon, tu peux planifier un travail, ou un bath avec osql.

    En espérant que cela t'aide.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 107
    Par défaut
    Merci pour l'information, mais ça ne fonctionne pas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC UPDATEUSAGE (MaBase)
    .

    Après avoir rempli ma base de données, j'ai beau vider ma base de données progressivement, jusqu'à ce qu'elle soit vide, et après chaque suppression j'exécute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DBCC SHRINKDATABASE (MaBase) 
    DBCC UPDATEUSAGE (MaBase) 
    sp_spaceused
    sp_helpfile 'MaBase_Data'
    .

    J'obtiens toujours la taille maximale...

    C'est seulement lorsque j'exécute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC SHRINKDATABASE (MaBase)
    plusieurs fois de suite que j'obtiens la taille réelle.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et en utilisant DBCCSHRINFILE, as-tu essayé ?

    Sinon, la proc sp_helpfile te donne des infos sur les fichiers (disons vus du système), alors que sp_spaceused te donne des infos sur l'utilisation (interne) des fichiers de la base. C'est informations sont différentes.

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    Citation Envoyé par kuzco
    Et en utilisant DBCCSHRINFILE, as-tu essayé ?

    Sinon, la proc sp_helpfile te donne des infos sur les fichiers (disons vus du système), alors que sp_spaceused te donne des infos sur l'utilisation (interne) des fichiers de la base. C'est informations sont différentes.
    Kuzco voulait sans doute écrire

    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oups, j'étais fatigué....
    Merci fadace !

  7. #7
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    ... ou un stupide dir du fichier... depuis l'OS ou via commande xp_cmdshell
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 107
    Par défaut
    J'ai effectivement essayé avec DBCC SHRINKFILE, mais avec malheureusement le même résultat...

    Pour gérer les fameux 2 Go de limite de MSDE, devrait-on la comparer au champ "data" (dans le second recordset) de sp_spaceused ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/10/2014, 14h55
  2. taille d'un fichier .mdf
    Par wafa1991 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/03/2014, 20h49
  3. Taille réelle espace utilisée fichier de donnée
    Par zut94 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/12/2008, 23h02
  4. Taille réelle d'un fichier
    Par cincap dans le forum Débuter
    Réponses: 18
    Dernier message: 01/10/2008, 19h01
  5. Réponses: 9
    Dernier message: 26/08/2006, 19h35

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