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 mit Transact-SQL überprüfen, ob eine SQL Server-Datenbankdatei eine Sparsedatei ist, und wie Sie die tatsächliche und maximale Größe ermitteln. Dateien mit geringer Dichte, die in Verbindung mit dem NTFS-Dateisystem vorkommen, 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
Auf 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.
Sie können die Spalte size_on_disk_bytes von der dynamischen Verwaltungsansicht sys.dm_io_virtual_file_stats von SQL Server verwenden, um den belegten Speicherplatz (in Bytes) der Sparsedateien einer Momentaufnahme anzuzeigen.
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:
Verwenden Sie die dir -Befehle an der Eingabeaufforderung von Windows.
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.
Auf 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)