2010-09-10 5 views
4

Comment puis-je voir toute l'utilisation du disque de toutes mes bases de données sur un serveur SQL donné en une seule requête? J'ai environ 15 bases de données différentes sur mon serveur et je veux voir lequel utilise l'espace disque maximum. Je sais que je peux voir des rapports d'utilisation du disque par base de données dans SSMS ou de connexion au serveur et voir la taille des fichiers MDF/LDF mais cela semble être une caractéristique assez évidente qui devrait venir avec SSMS et je ne peux pas trouver il.Résumé de l'utilisation du disque pour toutes les bases de données utilisant SSMS

Répondre

7

Je ne connais pas de méthode intégrée, mais vous pouvez utiliser la procédure (non documentée) sp_MSforeachdb pour cela.

CREATE TABLE #files(
    [dbname] [sysname] NOT NULL, 
    [name] [sysname] NOT NULL, 
    [physical_name] [nvarchar](260) NOT NULL, 
    [size] [int] NOT NULL, 
    [max_size] [int] NOT NULL, 
    [growth] [int] NOT NULL 
) 

EXEC sp_MSforeachdb ' 
insert into #files 
select ''[?]'',name,physical_name,size,max_size,growth 
from [?].sys.database_files' 


SELECT [dbname] 
     ,[name] 
     ,[physical_name] 
     ,[size] 
     ,[max_size] 
     ,[growth] 
    FROM #files 
+0

+1: Ouais, c'est ce que je fais. –

+0

Merci! cela marche. – mvm

+0

sp_spaceused peut également venir en bandeau avec ce maintenant – egbutter

6

Cette procédure stockée vous aidera.

exec sp_helpdb; 

Vous obtiendrez quelque chose comme ceci:

name  db_size  owner   dbid created  status                                                                   compatibility_level 
--------- ------------- ------------- ---- ----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------- 
Database1 7262.81 MB DOMAIN\Admin 5 Aug 25 2010 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics                    100 
Project27 22781.81 MB DOMAIN\User42 13 Oct 13 2011 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsTornPageDetectionEnabled, IsAnsiNullsEnabled, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsQuotedIdentifiersEnabled 100 
MyDBName  84.69 MB DOMAIN\Me  14 Oct 14 2011 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsFullTextEnabled               100 

Pour en savoir plus sur une base de données particulière, faire:

exec sp_helpdb DatabaseName; 
+0

cela a fonctionné très bien pour moi en me montrant le MB ma base de données utilisait. –

+0

C'est incroyablement simple et fonctionne exactement comme décrit. –

Questions connexes