Найти размер нескольких баз данных в SQL Server 2005 - PullRequest
5 голосов
/ 29 мая 2009

Мне было интересно, есть ли инструкция sql для получения текущего размера всех баз данных на вашем сервере вместо щелчка правой кнопкой мыши и перехода к свойствам для каждой из них.

Ответы [ 4 ]

6 голосов
/ 29 мая 2009

Если вы можете использовать хранимые процедуры, это должно работать:

exec sp_msforeachdb 'use ? exec sp_spaceused'
4 голосов
/ 29 мая 2009

Проверьте таблицу sys.master_files .

Этот запрос даст вам общий размер всего вашего экземпляра:

SELECT SUM(size*8192.0) AS totalsize
FROM sys.master_files;
2 голосов
/ 23 сентября 2009
exec sp_helpdb

Перечисляет размер данных, владельца, дату создания и т. Д. Для всех баз данных на сервере в одной удобной таблице.

Если вы хотите углубиться в конкретную базу данных, чтобы увидеть отдельные размеры таблиц, которые вы можете использовать

use MyFunkyDb
go
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]'
2 голосов
/ 23 сентября 2009

Самый простой способ - использовать:

exec [sys].[sp_databases]
go

Который производит что-то вроде:

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

Для размера журналов транзакций, связанных с базой данных, используйте:

dbcc sqlperf(logspace)
go

Который производит что-то вроде:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...