Anzeigen der Größe der Datei mit geringer Dichte einer Datenbank-Momentaufnahme (Transact-SQL)

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie Sie Transact-SQL verwenden, um zu überprüfen, ob eine SQL Server-Datenbankdatei eine spärliche Datei ist und um die tatsächlichen und maximalen Größen zu ermitteln. Spärliche Dateien, die ein Feature des NTFS-Dateisystems sind, werden von SQL Server-Datenbankmomentaufnahmen verwendet.

Hinweis

Beim Erstellen von Datenbankmomentaufnahmen werden Sparsedateien mithilfe der Dateinamen in der CREATE DATABASE-Anweisung erstellt. Diese Dateinamen werden in der Spalte physical_name in sys.master_files gespeichert. In sys.database_files (sowohl in der Quelldatenbank wie auch in einer Momentaufnahme) enthält die Spalte physical_name immer die Namen der Quelldatenbankdateien.

Überprüfen, ob eine Datenbankdatei eine Datei mit geringer Dichte ist

  1. In der Instanz von SQL Server:

    Wählen Sie entweder in der Datenbank-Momentaufnahme unter sys.database_files oder in sys.master_files die Spalte is_sparseaus. Der Wert gibt wie folgt an, ob die Datei eine Sparsedatei ist:

    1 = Die Datei ist eine Sparsedatei.

    0 = Die Datei ist keine Sparsedatei.

Ermitteln der tatsächlichen Größe einer Datei mit geringer Dichte

Hinweis

Sparsedateien wachsen in 64-KB-Schritten, weshalb die Größe einer Sparsedatei auf dem Datenträger immer einem Vielfachen von 64 KB entspricht.

Um die Anzahl der Bytes anzuzeigen, die jede spärliche Datei einer Momentaufnahme derzeit auf dem Datenträger verwendet, fragen Sie die size_on_disk_bytes Spalte der SQL Server-sys.dm_io_virtual_file_stats dynamische Verwaltungsansicht ab.

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.

Ermitteln der maximalen Größe einer Datei mit geringer Dichte

Eine Datei mit geringer Dichte kann maximal die Größe der Quelldatenbankdatei erreichen, die zum Zeitpunkt der Momentaufnahmeerstellung festgelegt wurde. Zur Ermittlung dieser Größe stehen Ihnen die folgenden Alternativen zur Auswahl:

  • Verwenden der Windows-Eingabeaufforderung:

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

    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.

  • In der Instanz von SQL Server:

    Wählen Sie entweder in sys.database_files in der Datenbank-Momentaufnahme oder in sys.master_files die size-Spalte aus. 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:

    ( Seitenanzahl * 8192)

Beispiel

Das folgende Skript zeigt für jede Sparsedatei die Größe auf dem Datenträger in KB an. Das Skript zeigt außerdem die maximale Größe in MB an, auf die eine Sparsedatei anwachsen kann. Führen Sie das Transact-SQL-Skript in SQL Server Management Studio aus.

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

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