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!
Partager