Delen via


De grootte van het Sparse-bestand van een databasemomentopname weergeven (Transact-SQL)

van toepassing op:SQL Server-

In dit onderwerp wordt beschreven hoe u Transact-SQL gebruikt om te controleren of een SQL Server-databasebestand een sparse-bestand is en om de werkelijke en maximale grootte ervan te achterhalen. Sparse-bestanden, die een functie van het NTFS-bestandssysteem zijn, worden gebruikt door momentopnamen van sql Server-databases.

Notitie

Tijdens het maken van een momentopname van de database worden sparse-bestanden gemaakt met behulp van de bestandsnamen in de instructie CREATE DATABASE. Deze bestandsnamen worden opgeslagen in sys.master_files in de kolom physical_name. In sys.database_files (in de brondatabase of in een momentopname) bevat de kolom physical_name altijd de namen van de brondatabasebestanden.

Controleer of een databasebestand een Sparse-bestand is

  1. Op de instantie van SQL Server:

    Selecteer de kolom is_sparse uit sys.database_files in de momentopname van de database of uit sys.master_files. De waarde geeft als volgt aan of het bestand een sparse-bestand is:

    1 = Bestand is een sparse-bestand.

    0 = Bestand is geen sparse-bestand.

De werkelijke grootte van een Sparse-bestand achterhalen

Notitie

Sparse bestanden groeien in stappen van 64 kilobyte (KB; De grootte van een sparse-bestand op schijf is dus altijd een veelvoud van 64 kB.

Als u het aantal bytes wilt weergeven dat elk sparsebestand van een momentopname momenteel op schijf gebruikt, voert u een query uit op de size_on_disk_bytes kolom van de SQL Server sys.dm_io_virtual_file_stats dynamische beheerweergave.

Als u de schijfruimte wilt weergeven die wordt gebruikt door een sparse-bestand, klikt u met de rechtermuisknop op het bestand in Microsoft Windows, klikt u op eigenschappenen bekijkt u de grootte op de schijf waarde.

De maximale grootte van een Sparse-bestand achterhalen

De maximale grootte waarop een sparse kan groeien, is de grootte van het bijbehorende brondatabasebestand op het moment dat de momentopname is gemaakt. Als u deze grootte wilt leren, kunt u een van de volgende alternatieven gebruiken:

  • Gebruik de Windows-opdrachtprompt:

    1. Gebruik Windows dir-opdrachten.

    2. Selecteer het sparse file, open het Eigenschappen dialoogvenster in Windows en bekijk de Grootte waarde.

  • Op het exemplaar van SQL Server:

    Selecteer de grootte kolom uit sys.database_files in de momentopname van de database of uit sys.master_files. De waarde van grootte kolom weerspiegelt de maximale ruimte in SQL-pagina's die de momentopname ooit kan gebruiken; deze waarde is gelijk aan het veld Windows Grootte, behalve dat deze wordt weergegeven in termen van het aantal SQL-pagina's in het bestand; de grootte in bytes is:

    ( aantal_pagina's * 8192)

Voorbeeld

Het volgende script toont de grootte op schijf in kilobytes voor elk sparse-bestand. Het script toont ook de maximale grootte in megabytes waarnaar een sparse-bestand kan groeien. Voer het Transact-SQL script uit in 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;

Zie ook

Database-snapshots (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)