Mi chiedevo se esiste un'istruzione sql per ottenere la dimensione corrente di tutti i database sul server invece di fare clic con il pulsante destro del mouse e andare a proprietà per ciascuno.Trova la dimensione di più database in SQL Server 2005
risposta
Se è possibile utilizzare le stored procedure, questo dovrebbe funzionare:
exec sp_msforeachdb 'use ? exec sp_spaceused'
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;
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
hey thomas, c'è un modo per formattare direttamente l'output della prima query in MB? Grazie mille! – RayofCommand
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 [?]'
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