2009-05-29 1 views

risposta

6

Se è possibile utilizzare le stored procedure, questo dovrebbe funzionare:

exec sp_msforeachdb 'use ? exec sp_spaceused' 
+0

Anche se questo darà indietro un gruppo di risultati per ciascuna delle basi di dati, che sembra un po 'disordinato. Preferisco usare la mia risposta che dà un * bel * tavolo. – pjp

4

Controllare la tabella sys.master_files.

Questa query vi darà dimensione totale di ogni cosa nella propria istanza:

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

Il modo più semplice è quello di utilizzare:

exec [sys].[sp_databases] 
go 

Che produce qualcosa come:

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

Per le dimensioni del log delle transazioni associati con un database, uso:

dbcc sqlperf(logspace) 
go 

che produce qualcosa di simile:

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, c'è un modo per formattare direttamente l'output della prima query in MB? Grazie mille! – RayofCommand

2
exec sp_helpdb 

liste fuori la dimensione dei dati, proprietario , data di creazione, ecc. per tutti i database su un server in un'unica tabella.

Se poi si vuole andare approfondire un particolare database per vedere le singole dimensioni delle tabelle è possibile utilizzare

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