Anzeigen von Datenbankmetadaten

Zum Anzeigen der Eigenschaften von Datenbanken, Dateien, Partitionen und Dateigruppen können Sie eine Vielzahl von Katalogsichten, Systemfunktionen und gespeicherten Systemprozeduren verwenden.

In der folgenden Tabelle sind die Katalogsichten, Systemfunktionen und gespeicherten Systemprozeduren aufgeführt, die Informationen zu Datenbanken, Dateien und Dateigruppen zurückgeben.

Einige Spalten in der sys.databases-Katalogsicht und die Eigenschaften in der DATABASEPROPERTYEX-Funktion können einen NULL-Wert zurückgeben, wenn die angegebene Datenbank nicht verfügbar ist. Um z. B. den Sortierungsnamen einer Datenbank zurückzugeben, ist der Zugriff auf die Datenbank erforderlich. Wenn jedoch die Datenbank nicht online ist oder die AUTO_CLOSE-Option auf ON gesetzt wurde, kann der Sortierungsname nicht zurückgegeben werden.

Beispiele

A. Verwenden von Systemkatalogsichten zum Zurückgeben von Datenbankinformationen

Im folgenden Beispiel werden die Katalogsichten sys.partitions, sys.allocation_units, sys.objects und sys.indexes zum Zurückgeben der Partitionsnummern und Zuordnungseinheiten der einzelnen Tabellen und Indizes in der Datenbank verwendet.

USE AdventureWorks;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name,
    o.name AS table_name, 
    i.name AS index_name, 
    au.type_desc AS allocation_type, 
    au.data_pages AS pages_per_allocation_unit, 
    partition_number
FROM sys.allocation_units AS au
    JOIN sys.partitions AS p ON au.container_id = p.partition_id
    JOIN sys.objects AS o ON p.object_id = o.object_id
    JOIN sys.indexes AS i ON p.index_id = i.index_id 
        AND i.object_id = p.object_id
WHERE o.type_desc <> N'SYSTEM_TABLE'
ORDER BY table_name, p.index_id;

A. Verwenden von Systemkatalogsichten zum Zurückgeben von Informationen zur Datenbankgröße

In den folgenden Beispielen werden die sys.database_files-Katalogsicht und die dynamische Verwaltungssicht sys.dm_db_file_space_usage verwendet, um Informationen zur Größe der tempdb-Datenbank zurückzugeben. Die Sicht sys.dm_db_file_space_usage gilt nur für die tempdb-Datenbank.

SELECT 
name AS FileName, 
size*1.0/128 AS FileSizeinMB,
'MaximumSizeinMB' = 
    CASE max_size 
       WHEN 0 THEN 'No growth is allowed.'
       WHEN -1 THEN 'Autogrowth is on.'
       WHEN 268435456 
          THEN 'Log file will grow to a maximum size of 2 TB.'
       ELSE CAST (max_size*1.0/128 AS nvarchar(30))
    END,
growth AS 'GrowthValue',
'GrowthIncrement' = 
    CASE 
       WHEN growth = 0 THEN 'File size is fixed and will not grow.'
       WHEN growth > 0 AND is_percent_growth = 0 
          THEN 'Growth value is in units of 8-KB pages.'
       ELSE 'Growth value is a percentage.'
    END
FROM tempdb.sys.database_files;
GO
USE tempdb;
GO
SELECT (SUM(unallocated_extent_page_count)*1.0/128) AS free_space_in_MB,
(SUM(version_store_reserved_page_count + 
    user_object_reserved_page_count +internal_object_reserved_page_count + 
    mixed_extent_page_count)*1.0/128) AS used_space_in_MB
FROM sys.dm_db_file_space_usage;

C. Verwenden von Systemfunktionen

Im folgenden Beispiel wird die Systemfunktion DATABASEPROPERTYEX zum Zurückgeben des Namens der Standardsortierung für die AdventureWorks-Datenbank verwendet.

SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation');