2009-05-29 6 views

Répondre

6

Si vous pouvez utiliser des procédures stockées, cela devrait fonctionner:

exec sp_msforeachdb 'use ? exec sp_spaceused' 
+0

Bien que cela redonnera un jeu de résultats pour chacune des bases de données qui ressemble un peu en désordre. Je préfère utiliser ma réponse qui donne une * belle * table. – pjp

4

Consultez la table sys.master_files.

Cette requête vous donnera la taille totale de tout dans votre exemple:

SELECT SUM(size*8192.0) AS totalsize 
FROM sys.master_files; 
2

La façon la plus simple est d'utiliser:

exec [sys].[sp_databases] 
go 

Qui produit quelque chose comme:

Name  Size Remarks 
mydatabase1 29888 NULL 
mydatabase2 13760 NULL 
mydatabase3 11776 NULL 
master  5376 NULL 
model  3008 NULL 
msdb  7616 NULL 
tempdb  2560 NULL 

Pour la taille de la transaction journaux associés à une base de données, utilisez:

dbcc sqlperf(logspace) 
go 

qui produit quelque chose comme:

Name  Log Size (MB) Log Space Used (%) Status 
master  1.242188  50.9434   0 
tempdb  0.7421875  61.25    0 
model  0.7421875  38.94737   0 
msdb  1.992188  35.88235   0 
mydatabase1 5.554688  18.55661   0 
mydatabase2 2.742188  32.9594   0 
mydatabase3 8.992188  26.58015   0 
+0

hey thomas, existe-t-il un moyen de formater directement la sortie de la première requête en MB? Merci beaucoup! – RayofCommand

2
exec sp_helpdb 

listes sur la taille des données, propriétaire , date de création, etc pour toutes les bases de données sur un serveur dans une belle table.

Si vous voulez ensuite aller plonger dans une base de données particulière pour voir la taille des tables individuelles que vous pouvez utiliser

use MyFunkyDb 
go 
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]' 
Questions connexes