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.
Sichten |
Funktionen |
Gespeicherte Prozeduren und andere Anweisungen |
---|---|---|
|
||
|
||
|
||
|
||
|
||
|
||
sys.dm_db_file_space_usage (Transact-SQL) (nur tempdb) |
|
|
sys.dm_db_session_space_usage (Transact-SQL) (nur tempdb) |
|
|
sys.dm_db_task_space_usage (Transact-SQL) (nur tempdb) |
|
|
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');
Siehe auch