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