sys.dm_db_file_space_usage (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar utrymmesanvändningsinformation för varje datafil i databasen.

Anmärkning

Om du vill anropa detta från Azure Synapse Analytics eller Analytics Platform System (PDW) använder du namnet sys.dm_pdw_nodes_db_file_space_usage. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
database_id smallint Databas-ID.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
file_id smallint Fil-ID.

file_id mappar till file_id in sys.dm_io_virtual_file_stats och till fileid i sys.sysfiles.
filegroup_id smallint gäller för: SQL Server 2012 (11.x) och senare versioner.

Filgrupps-ID.
total_page_count bigint gäller för: SQL Server 2012 (11.x) och senare versioner.

Totalt antal sidor i datafilen.
allocated_extent_page_count bigint gäller för: SQL Server 2012 (11.x) och senare versioner.

Totalt antal sidor i de tilldelade extents i datafilen.
unallocated_extent_page_count bigint Totalt antal sidor i de oallokerade extents i datafilen.

Oanvända sidor i tilldelade extents ingår inte.
version_store_reserved_page_count bigint Totalt antal sidor i de enhetliga utsträckningar som är avsatta för versionslagret. Version Store-sidor tilldelas aldrig från blandade utsträckningar.

IAM-sidor ingår inte, eftersom de alltid tilldelas från blandade utsträckningar. PFS-sidor inkluderas om de tilldelas från en enhetlig omfattning.

För mer information, se sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Totalt antal sidor som tilldelats från enhetliga extenser för användarobjekt i databasen. Oanvända sidor från en tilldelad omfattning ingår i räkningen.

IAM-sidor ingår inte, eftersom de alltid tilldelas från blandade utsträckningar. PFS-sidor inkluderas om de tilldelas från en enhetlig omfattning.

Du kan använda kolumnen total_pages i sys.allocation_units katalogvy för att returnera antalet reserverade sidor för varje allokeringsenhet i användarobjektet. Kolumnen total_pages innehåller dock IAM-sidor.
internal_object_reserved_page_count bigint Totalt antal sidor i enhetliga extents tilldelade interna objekt i filen. Oanvända sidor från en tilldelad omfattning ingår i räkningen.

IAM-sidor ingår inte, eftersom de alltid tilldelas från blandade utsträckningar. PFS-sidor inkluderas om de tilldelas från en enhetlig omfattning.

Det finns ingen katalogvy eller dynamiskt hanteringsobjekt som returnerar sidantalet för varje internt objekt.
mixed_extent_page_count bigint Totalt antal tilldelade och oallokerade sidor i tilldelade blandade omfängder i filen. Blandade extents innehåller sidor som tilldelats olika objekt. Denna räkning inkluderar alla IAM-sidor i filen.
modified_extent_page_count bigint Gäller för: SQL Server 2016 (13.x) SP2 och senare versioner.

Totalt antal sidor som har ändrats i tilldelade utsträckningar av filen sedan senaste fullständiga databasbackup. Det modifierade sidantalet kan användas för att spåra antalet differentierade ändringar i databasen sedan senaste fullständiga backup, för att avgöra om differentialbackup behövs.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.
distribution_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Det unika numeriska ID:t som är kopplat till fördelningen.

Anmärkningar

Sidantalet är alltid på omfattningsnivå. Därför är sidantalet alltid en multipel av åtta. De utsträckningar som innehåller Global Allocation Map (GAM) och Shared Global Allocation Map (SGAM) allokeringssidor tilldelas enhetliga utsträckningar. De ingår inte i de tidigare beskrivna sidräkningarna. Mer information om sidor och omfattningar finns i Arkitekturguide för sidor och omfattningar.

Innehållet i den nuvarande versionen av butiken finns i sys.dm_tran_version_store. Versionslagersidor spåras på filnivå istället för sessions- och uppgiftsnivå, eftersom de är globala resurser. En session kan generera versioner, men versionerna kan inte tas bort när sessionen avslutas. Versionsbutiksrensning måste ta hänsyn till den längst pågående transaktionen som behöver åtkomst till den specifika versionen. Den längst pågående transaktionen relaterad till versionslagringsrengöring kan upptäckas genom att titta på kolumnen elapsed_time_seconds i sys.dm_tran_active_snapshot_database_transactions.

Frekventa ändringar i kolumnen mixed_extent_page_count kan tyda på omfattande användning av SGAM-sidor. När detta händer kan du se många PAGELATCH_UP väntetider där väntresursen är en SCAM-sida. För mer information, se sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) ochsys.dm_os_latch_stats (Transact-SQL).

Användarobjekt

Följande objekt ingår i användarobjektets sidräknare:

  • Användardefinierade tabeller och index
  • Systemtabeller och index
  • Globala temporära tabeller och index
  • Lokala temporära tabeller och index
  • Tabellvariabler
  • Tabeller returnerade i tabellvärda funktioner

Interna objekt

Interna objekt finns endast i tempdb. Följande objekt ingår i de interna objektsidans räknare:

  • Arbetstabeller för markör- eller spooloperationer samt tillfällig lagring av stora objekt (LOB)
  • Arbetsfiler för operationer som en hash-join
  • Sortera körningar

Relations kardinaliteter

Från Till Förhållande
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id One-to-one

Permissions

På SQL Server 2019 (15.x) och tidigare versioner, samt SQL Managed Instance, krävs VIEW SERVER STATE behörighet.

På SQL Server 2022 (16.x) och senare versioner krävs behörighet VIEW SERVER PERFORMANCE STATE på servern.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Examples

Bestem mängden ledigt utrymme i tempdb

Följande fråga returnerar det totala antalet lediga sidor och totalt ledigt utrymme i megabyte (MB) som finns tillgängligt i alla datafiler i tempdb.

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;

Bestäm hur mycket utrymme användarobjekten använder

Följande fråga returnerar det totala antalet sidor som används av användarobjekt och det totala utrymmet som används av användarobjekt i tempdb.

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;

Se även