Affichage des métadonnées de la base de données
Vous pouvez afficher les propriétés d'une base de données, d'un fichier, d'une partition et d'un groupe de fichiers à l'aide de divers affichages catalogue, fonctions système et procédures stockées système.
Le tableau suivant énumère les affichages catalogue, fonctions système et procédures stockées système qui retournent des informations sur les bases de données, les fichiers et les groupes de fichiers.
Vues |
Fonctions |
Procédures stockées et autres instructions |
---|---|---|
|
||
|
||
|
||
|
||
|
||
|
||
sys.dm_db_file_space_usage (Transact-SQL) (tempdb uniquement) |
|
|
sys.dm_db_session_space_usage (Transact-SQL) (tempdb uniquement) |
|
|
sys.dm_db_task_space_usage (Transact-SQL) (tempdb uniquement) |
|
|
Certaines colonnes de l'affichage catalogue sys.databases et certaines propriétés de la fonction DATABASEPROPERTYEX peuvent retourner une valeur NULL si la base de données spécifiée n'est pas disponible. Par exemple, pour retourner le nom de classement d'une base de données, celle-ci doit être accessible. Si la base de données n'est pas en ligne ou si l'option AUTO_CLOSE est activée (ON), le nom de classement ne peut pas être retourné.
Exemples
A. Utilisation d'affichages catalogue système pour retourner des informations sur la base de données
L'exemple suivant utilise les affichages catalogue sys.partitions, sys.allocation_units, sys.objects et sys.indexes pour retourner les numéros de partitions et les unités d'allocation utilisés par chaque table et index de la base de données.
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;
B. Utilisation d'affichages catalogue système pour retourner des informations sur la taille de la base de données
Les exemples suivants utilisent l'affichage catalogue sys.database_files et la vue de gestion dynamique sys.dm_db_file_space_usage pour retourner des informations de taille sur la base de données tempdb. La vue sys.dm_db_file_space_usage est applicable uniquement à tempdb.
USE tempdb;
GO
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. Utilisation des fonctions système
L'exemple suivant utilise la fonction système DATABASEPROPERTYEX pour retourner le nom du classement par défaut de la base de données AdventureWorks2008R2.
SELECT DATABASEPROPERTYEX('AdventureWorks2008R2', 'Collation');