Fichiers Sparse : Comment les lister ?
Bonjour à tous,
Une récente analyse assez poussée nous a à nouveau confrontés aux fichiers SPARSE, et j'ai eu besoin de lister facilement le status de nombreuses bases/fichiers.
Les DMV SQL Server remontent l'information cependant j'ai pu constater qu'il fallait parfois un redémarrage du service SQL Server pour que le flag soit correctement affiché dans le cas de la première (qui cible la DB en cours ) :
select is_sparse,* from sys.database_files
select is_sparse as sp, name,physical_name,database_id,file_id,type_desc from sys.master_files order by sp desc
Comme le flag SPARSE est avant tout un flag du système de fichiers, je me suis penché sur les moyens disponibles à ce niveau : on retrouve notre FSUTIL mais qui nécessite de cibler UN fichier. Un peu fastidieux si on a une cinquantaine de fichiers !
Heureusement, powershell est là !
gci |Where-Object {$_.PSIsContainer -eq $False}| % {echo $_.name ;fsutil sparse queryflag $_.name} >>sparse.txt
puis rechercher la chaine 'is set as sparse' dans le fichier sparse.txt avec votre éditeur préféré.
Attention, FSUTIL ne pourra interroger les fichiers d'une base SQL Server active (service démarré).
++
Guillaume Fourrat
Ingénieur d'Escalade