Afficher la taille du fichier sparse d’un instantané d’une base de données (Transact-SQL)

S'applique à :SQL Server

Cette rubrique décrit comment utiliser Transact-SQL pour vérifier si un fichier de base de données SQL Server est un fichier sparse et déterminer ses tailles réelle et maximale. Les fichiers épars, qui constituent une fonctionnalité du système de fichiers NTFS, sont utilisés par les instantanés de base de données SQL Server.

Remarque

Lors de la création de captures instantanées de base de données, des fichiers épars sont créés en utilisant les noms de fichiers de l’instruction CREATE DATABASE. Ces noms de fichiers sont stockés dans sys.master_files dans la colonne physical_name . Dans sys.database_files (dans la base de données source ou dans l’instantané), la colonne physical_name contient toujours les noms des fichiers de la base de données source.

Vérifier qu'un fichier de base de données est un fichier creux

  1. Sur l’instance de SQL Server :

    Sélectionnez la colonne is_sparse soit dans sys.database_files dans l’instantané de la base de données, soit dans sys.master_files. La valeur indique si le fichier est un fichier creux, comme suit :

    1 = Le fichier est un fichier creux.

    0 = Le fichier n'est pas un fichier creux.

Déterminer la taille réelle d’un fichier clairsemé

Remarque

Les fichiers creux augmentent par incréments de 64 kilo-octets (Ko) ; ainsi, la taille d’un fichier creux sur le disque est toujours un multiple de 64 Ko.

Pour afficher le nombre d’octets qu’utilise actuellement sur le disque chaque fichier épars d’un cliché instantané, interrogez la colonne size_on_disk_bytes de la vue de gestion dynamique SQL Server sys.dm_io_virtual_file_stats.

Pour afficher l’espace disque utilisé par un fichier creux, cliquez avec le bouton droit sur le fichier dans Microsoft Windows, cliquez sur Propriétés et consultez la valeur de Taille sur le disque.

Déterminer la taille maximale d’un fichier creux

La taille maximale qu’un fichier clairsemé peut atteindre est celle du fichier de base de données source correspondant au moment de la création de l’instantané. Pour connaître la taille de ce fichier, utilisez une des méthodes suivantes :

  • Utilisation de l’invite de commandes de Windows :

    1. Utilisez les commandes dir de Windows.

    2. Sélectionnez le fichier sparse, ouvrez la boîte de dialogue Propriétés dans Windows et regardez la valeur Taille.

  • Sur l’instance de SQL Server :

    Sélectionnez la colonne size soit dans sys.database_files dans l’instantané de la base de données, soit dans sys.master_files. La valeur de la colonne size reflète l'espace maximal que l'instantané peut utiliser en 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 :

    ( nombre_de_pages * 8192)

Exemple

Le script suivant affichera la taille sur le disque en kilo-octets pour chaque fichier creux. Le script affichera également la taille maximale, en mégaoctets, jusqu’à laquelle un fichier creux peut croître. Exécuter le script Transact-SQL dans SQL Server Management Studio.

SELECT  DB_NAME(sd.source_database_id) AS [SourceDatabase], 
		sd.name AS [Snapshot],
		mf.name AS [Filename], 
		size_on_disk_bytes/1024 AS [size_on_disk (KB)],
		mf2.size/128 AS [MaximumSize (MB)]
FROM sys.master_files mf
JOIN sys.databases sd
	ON mf.database_id = sd.database_id
JOIN sys.master_files mf2
	ON sd.source_database_id = mf2.database_id
	AND mf.file_id = mf2.file_id
CROSS APPLY sys.dm_io_virtual_file_stats(sd.database_id, mf.file_id)
WHERE mf.is_sparse = 1
AND mf2.is_sparse = 0
ORDER BY 1;

Voir aussi

Instantanés de base de données (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)