sys.dm_db_file_space_usage (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt Informationen zur Speicherplatznutzung für jede Datendatei in der Datenbank zurück.

Hinweis

Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_db_file_space_usage. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Spaltenname Datentyp Beschreibung
database_id smallint Datenbank-ID

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers.
file_id smallint Die Datei-ID

file_idfile_id wird in sys.dm_io_virtual_file_stats und dateiid in sys.sysfiles zugeordnet.
filegroup_id smallint Gilt für: SQL Server 2012 (11.x) und höhere Versionen.

Die Dateigruppen-ID.
total_page_count bigint Gilt für: SQL Server 2012 (11.x) und höhere Versionen.

Gesamtanzahl der Seiten in der Datendatei.
allocated_extent_page_count bigint Gilt für: SQL Server 2012 (11.x) und höhere Versionen.

Gesamtanzahl der Seiten in den zugeordneten Umfangen in der Datendatei.
unallocated_extent_page_count bigint Die Gesamtzahl der Seiten in den nicht zugewiesenen Ausmaßen in der Datendatei.

Nicht verwendete Seiten in zugewiesenen Umfangen sind nicht enthalten.
version_store_reserved_page_count bigint Gesamtzahl der Seiten in den gleichartigen Blöcken, die dem Versionsspeicher zugeordnet werden. Versionsspeicherseiten werden nie aus gemischten Blöcken zugeordnet.

IAM-Seiten sind nicht enthalten, da sie immer aus gemischten Ausmaßen zugeordnet werden. PFS-Seiten sind dann enthalten, wenn sie aus einem einheitlichen Block zugeordnet werden.

Weitere Informationen finden Sie unter sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Gesamtzahl der Seiten, die aus gleichartigen Blöcken für Benutzerobjekte in der Datenbank zugeordnet werden. Nicht verwendete Seiten aus einem zugeordneten Block sind in der Gesamtzahl enthalten.

IAM-Seiten sind nicht enthalten, da sie immer aus gemischten Ausmaßen zugeordnet werden. PFS-Seiten sind dann enthalten, wenn sie aus einem einheitlichen Block zugeordnet werden.

Sie können die total_pages Spalte in der sys.allocation_units Katalogansicht verwenden, um die reservierte Seitenanzahl jeder Zuordnungseinheit im Benutzerobjekt zurückzugeben. Die total_pages Spalte enthält jedoch IAM-Seiten.
internal_object_reserved_page_count bigint Gesamtzahl der Seiten in gleichartigen Blöcken, die für interne Objekte in der Datei zugeordnet werden. Nicht verwendete Seiten aus einem zugeordneten Block sind in der Gesamtzahl enthalten.

IAM-Seiten sind nicht enthalten, da sie immer aus gemischten Ausmaßen zugeordnet werden. PFS-Seiten sind dann enthalten, wenn sie aus einem einheitlichen Block zugeordnet werden.

Es ist keine Katalogsicht bzw. kein dynamisches Verwaltungsobjekt vorhanden, die bzw. das die Seitenanzahl für jedes interne Objekt zurückgibt.
mixed_extent_page_count bigint Gesamtzahl der zugeordneten und nicht zugeordneten Seiten in zugeordneten gemischten Blöcken in der Datei. Gemischte Blöcke enthalten Seiten, die verschiedenen Objekten zugeordnet werden. Diese Gesamtzahl enthält alle IAM-Seiten in der Datei.
modified_extent_page_count bigint Gilt für: SQL Server 2016 (13.x) SP2 und höhere Versionen.

Die Gesamtzahl der Seiten, die in zugewiesenen Umfangen der Datei seit der letzten vollständigen Datenbanksicherung geändert wurden. Die geänderte Seitenanzahl kann verwendet werden, um die Anzahl der differenziellen Änderungen in der Datenbank seit der letzten vollständigen Sicherung nachzuverfolgen, um zu entscheiden, ob differenzielle Sicherung erforderlich ist.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.
distribution_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Die eindeutige numerische ID, die der Verteilung zugeordnet ist.

Hinweise

Die Anzahl von Seiten wird immer auf Blockebene angegeben. Daher sind Seitenanzahlswerte immer ein Vielfaches von acht. Die Blöcke, die GAM-Zuordnungsseiten (Global Allocation Map) und SGAM-Zuordnungsseiten (Shared Global Allocation Map) enthalten, werden gleichartigen Blöcken zugeordnet. Sie sind nicht in der zuvor beschriebenen Seitenanzahl enthalten. Weitere Informationen zu Seiten und Umfangen finden Sie im Handbuch zur Architektur von Seiten und Schlüssen.

Der Inhalt des aktuellen Versionsspeichers befindet sich in sys.dm_tran_version_store. Versionsspeicherseiten werden auf der Dateiebene anstelle der Sitzungs- und Taskebene nachverfolgt, da es sich bei ihnen um globale Ressourcen handelt. Eine Sitzung kann Versionen generieren, aber die Versionen können nicht entfernt werden, wenn die Sitzung endet. Beim Cleanup des Versionsspeichers muss die am längsten ausgeführte Transaktion, die Zugriff auf die bestimmte Version benötigt, berücksichtigt werden. Die am längsten ausgeführte Transaktion im Zusammenhang mit dem Versionsspeicher sauber-Up kann durch Anzeigen der spalte elapsed_time_seconds in sys.dm_tran_active_Momentaufnahme_database_transactions ermittelt werden.

Häufige Änderungen in der mixed_extent_page_count Spalte können auf eine starke Verwendung von SGAM-Seiten hinweisen. In diesem Fall sind zahlreiche PAGELATCH_UP-Wartevorgänge enthalten, bei denen die Warteressource eine SGAM-Seite ist. Weitere Informationen finden Sie unter sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) und sys.dm_os_latch_stats (Transact-SQL).

Benutzerobjekte

Die folgenden Objekte sind in den Seitenzählern für Benutzerobjekte enthalten:

  • Benutzerdefinierte Tabellen und Indizes
  • Systemtabellen und -indizes
  • Globale temporäre Tabellen und Indizes
  • Lokale temporäre Tabellen und Indizes
  • Tabellenvariablen
  • In Tabellenwertfunktionen zurückgegebene Tabellen

Interne Objekte

Interne Objekte befinden sich nur in tempdb. Die folgenden Objekte sind in den Seitenzählern für interne Objekte enthalten:

  • Arbeitstabellen für Cursor- oder Spoolvorgänge und temporären LOB-Speicher (Large Object)
  • Arbeitsdateien für Vorgänge wie z. B. Hashjoins
  • Sortierläufe

Kardinalitäten von Beziehungen

From Beschreibung Beziehung
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id 1:1

Berechtigungen

Für SQL Server 2019 (15.x) und frühere Versionen und SQL-verwaltete Instanz ist eine Berechtigung erforderlichVIEW SERVER STATE.

In SQL Server 2022 (16.x) und höheren Versionen ist die BERECHTIGUNG VIEW SERVER PERFORMANCE STATE auf dem Server erforderlich.

Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto oder die Mitgliedschaft in der ##MS_ServerStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Beispiele

Bestimmen der Menge des freien Speicherplatzes in tempdb

Die folgende Abfrage gibt die Gesamtanzahl der freien Seiten und den gesamten freien Speicherplatz in Megabyte (MB) zurück, der in allen Datendateien tempdbverfügbar ist.

USE tempdb;
GO

SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

Bestimmen des von Benutzerobjekten verwendeten Speicherplatzes

Die folgende Abfrage gibt die Gesamtanzahl der von Benutzerobjekten verwendeten Seiten und den Gesamtraum zurück, der tempdbvon Benutzerobjekten verwendet wird.

USE tempdb;
GO

SELECT
    SUM(user_object_reserved_page_count) AS [user object pages used],
    (SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

Siehe auch