Anzeigen der Größe der Datei mit geringer Dichte einer Datenbank-Momentaufnahme (Transact-SQL)View the Size of the Sparse File of a Database Snapshot (Transact-SQL)

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse In diesem Thema wird beschrieben, wie Sie mit Transact-SQLTransact-SQL überprüfen, ob eine SQL ServerSQL Server-Datenbankdatei eine Sparsedatei ist, und wie Sie die tatsächliche und maximale Größe ermitteln. This topic describes how to use Transact-SQLTransact-SQL to verify that a SQL ServerSQL Server database file is a sparse file and to find out its actual and maximum sizes. Dateien mit geringer Dichte, die in Verbindung mit dem NTFS-Dateisystem vorkommen, werden von SQL ServerSQL Server -Datenbankmomentaufnahmen verwendet.Sparse files, which are a feature of the NTFS file system, are used by SQL ServerSQL Server database snapshots.

Hinweis

Beim Erstellen von Datenbankmomentaufnahmen werden Sparsedateien mithilfe der Dateinamen in der CREATE DATABASE-Anweisung erstellt.During database snapshot creation, sparse files are created by using the file names in the CREATE DATABASE statement. Diese Dateinamen werden in der Spalte physical_name in sys.master_files gespeichert.These file names are stored in sys.master_files in the physical_name column. In sys.database_files (sowohl in der Quelldatenbank wie auch in einer Momentaufnahme) enthält die Spalte physical_name immer die Namen der Quelldatenbankdateien.In sys.database_files (whether in the source database or in a snapshot), the physical_name column always contains the names of the source database files.

Überprüfen, ob eine Datenbankdatei eine Datei mit geringer Dichte istVerify that a Database File is a Sparse File

  1. Auf der Instanz von SQL ServerSQL Server:On the instance of SQL ServerSQL Server:

    Wählen Sie entweder in der Datenbank-Momentaufnahme unter sys.database_files oder in sys.master_files die Spalte is_sparseaus.Select the is_sparse column from either sys.database_files in the database snapshot or from sys.master_files. Der Wert gibt wie folgt an, ob die Datei eine Sparsedatei ist:The value indicates whether the file is a sparse file, as follows:

    1 = Die Datei ist eine Sparsedatei.1 = File is a sparse file.

    0 = Die Datei ist keine Sparsedatei.0 = File is not a sparse file.

Ermitteln der tatsächlichen Größe einer Datei mit geringer DichteFind Out the Actual Size of a Sparse File

Hinweis

Sparsedateien wachsen in 64-KB-Schritten, weshalb die Größe einer Sparsedatei auf dem Datenträger immer einem Vielfachen von 64 KB entspricht.Sparse files grow in 64-kilobyte (KB) increments; thus, the size of a sparse file on disk is always a multiple of 64 KB.

Sie können die Spalte size_on_disk_bytes der dynamischen Verwaltungssicht sys.dm_io_virtual_file_stats von SQL ServerSQL Server verwenden, um den belegten Speicherplatz (in Bytes) der Sparsedateien einer Momentaufnahme anzuzeigen.To view the number of bytes that each sparse file of a snapshot is currently using on disk, query the size_on_disk_bytes column of the SQL ServerSQL Serversys.dm_io_virtual_file_stats dynamic management view.

Zum Anzeigen des Speicherplatzes, der durch eine Sparsedatei in Anspruch genommen wird, klicken Sie in Microsoft Windows mit der rechten Maustaste auf Eigenschaften, und lesen Sie den Wert unter Größe auf Datenträger ab.To view the disk space used by a sparse file, right-click the file in Microsoft Windows, click Properties, and look at the Size on disk value.

Ermitteln der maximalen Größe einer Datei mit geringer DichteFind Out the Maximum Size of a Sparse File

Eine Datei mit geringer Dichte kann maximal die Größe der Quelldatenbankdatei erreichen, die zum Zeitpunkt der Momentaufnahmeerstellung festgelegt wurde.The maximum size to which a sparse can grow is the size of the corresponding source database file at the time of the snapshot creation. Zur Ermittlung dieser Größe stehen Ihnen die folgenden Alternativen zur Auswahl:To learn this size, you can use one of the following alternatives:

  • Verwenden der Windows-Eingabeaufforderung:Using Windows Command Prompt:

    1. Verwenden Sie die dir -Befehle an der Eingabeaufforderung von Windows.Use Windows dir commands.

    2. Wählen Sie die Datei mit geringer Größe aus, öffnen Sie in Windows das Dialogfeld Eigenschaften der Datei, und lesen Sie den Wert für die Größe ab.Select the sparse file, open the file Properties dialog box in Windows, and look at the Size value.

  • Auf der Instanz von SQL ServerSQL Server:On the instance of SQL ServerSQL Server:

    Wählen Sie entweder in sys.database_files in der Datenbank-Momentaufnahme oder in sys.master_files die size-Spalte aus.Select the size column from either sys.database_files in the database snapshot or from sys.master_files. Der Wert in der size -Spalte gibt den maximal durch eine Momentaufnahme verwendbaren Speicherplatz in SQL-Seiten an. Dieser Wert entspricht dem Feld Größe in Windows. Der einzige Unterschied besteht darin, dass hierbei die Anzahl der SQL-Seiten in der Datei angegeben wird. Die Größe in Bytes kann daraus wie folgt errechnet werden:The value of size column reflects the maximum space, in SQL pages, that the snapshot can ever use; this value is equivalent to the Windows Size field, except that it is represented in terms of the number of SQL pages in the file; the size in bytes is:

    ( Seitenanzahl * 8192)( number_of_pages * 8192)

BeispielExample

Das folgende Skript zeigt für jede Sparsedatei die Größe auf dem Datenträger in KB an.The following script will show the size on disk in kilobytes for each sparse file. Das Skript zeigt außerdem die maximale Größe in MB an, auf die eine Sparsedatei anwachsen kann.The script will also show the maximum size in megabytes to which a sparse file can grow. Führen Sie das Transact-SQL-Skript in SQL Server Management StudioSQL Server Management Studioaus.Execute the Transact-SQL script in SQL Server Management StudioSQL 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;

Weitere Informationen finden Sie unterSee Also

Datenbank-Momentaufnahmen (SQL Server) Database Snapshots (SQL Server)
sys.fn_virtualfilestats (Transact-SQL) sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL) sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)sys.master_files (Transact-SQL)