Tailles des fichiers fragmentés dans les captures instantanées de bases de données

Une capture instantanée de base de données utilise un ou plusieurs fichiers fragmentés pour stocker les données. Pendant la création d'une capture instantanée de base de données, ces fichiers fragmentés sont créés et nommés par l'instruction CREATE DATABASE. Ces noms de fichiers sont stockés dans sys.master_files dans la colonne physical_name.

[!REMARQUE]

Dans sys.database_files (dans la base de données source ou dans la capture instantanée), la colonne physical_name contient toujours les noms des fichiers de la base de données source.

Les fichiers fragmentés sont une spécificité du système de fichiers NTFS. Au départ, un fichier fragmenté ne contient pas de données utilisateur et aucun espace disque pour les données utilisateur ne lui a été alloué. Pour des informations générales sur l'utilisation des fichiers partiellement alloués dans une capture instantanée de base de données et sur le schéma de croissance des captures instantanées de bases de données, consultez Fonctionnement des captures instantanées de base de données.

À sa création, un fichier fragmenté occupe très peu d'espace disque. Ensuite, au fil du temps, des données y sont écrites et le système NFTS lui alloue de l'espace disque progressivement. La taille d'un fichier fragmenté peut donc devenir très importante. Si une capture instantanée de base de données ne dispose plus de suffisamment d'espace, elle est marquée comme suspecte et doit être supprimée. La base de données source, en revanche, n'est pas concernée et toutes les actions sur cette dernière se poursuivent normalement.

La taille d'un fichier fragmenté augmente par incréments de 64 kilo-octets (Ko). Elle est donc toujours un multiple de 64 Ko. Le dernier incrément de 64 Ko contient une à huit pages de 8 Ko, en fonction du nombre de pages qui ont été copiées à partir de la base de données source. Ceci signifie qu'en moyenne, la taille d'un fichier fragmenté dépasse légèrement l'espace réellement occupé par les pages qu'il contient.

  • Pour connaître la taille réelle d'un fichier partiellement alloué

    Pour connaître le nombre d'octets utilisés actuellement sur le disque par chaque fichier partiellement alloué de la capture instantanée, vous pouvez utiliser la colonne size_on_disk_bytes de la vue de gestion dynamique sys.dm_io_virtual_file_stats.

    Autre possibilité pour afficher l'espace disque réellement occupé par un fichier partiellement alloué : cliquez avec le bouton droit sur le fichier dans Microsoft Windows, cliquez sur Propriétés et notez la valeur indiquée dans Taille sur le disque.

  • Pour connaître la taille maximale d'un fichier fragmenté

    La taille maximale d'un fichier fragmenté correspond à la taille du fichier de la base de données source au moment de la création de la capture instantanée. Pour connaître la taille de ce fichier, utilisez une des méthodes suivantes :

    • Utilisez les commandes dir de Windows.

    • Sélectionnez le fichier fragmenté, ouvrez la boîte de dialogue Propriétés dans Windows et relevez la valeur du champ Taille.

    • Sélectionnez la colonne size soit dans sys.database_files dans la capture instantanée de la base de données, soit dans sys.master_files. La colonne size dans sys.database_files ou sys.master_files reflète l'espace maximal que la capture instantanée peut utiliser dans les pages SQL. Cette valeur correspond à celle du champ Taille de Windows, sauf qu'elle est exprimée en termes de nombre de pages SQL dans le fichier ; la taille en octets étant :

      (number_of_pages * 8192)

Historique des modifications

Mise à jour du contenu

Remplacement de fn_virtualfilestats par sys.dm_io_virtual_file_stats dans la section « Pour connaître la taille réelle d'un fichier partiellement alloué ».