Найдите размер нескольких баз данных в SQL Server 2005

Метод должен делать одну вещь и делать это хорошо. Он не должен делать ничего более или менее того, что подразумевает его название. Метод CustomerSave также не должен нормализовать адрес клиента.

Метод должен касаться только одного «уровня» функциональности. Если в методе CustomerSave появляется более одной строки кода для каждого из следующих действий: открытие базы данных, регистрация изменений, проверка безопасности и т. Д., Тогда код работает на неправильном уровне, и должны быть созданы новые методы для работы с эти вещи в надлежащей детализации.

Метод обычно должен быть очень коротким. Только при особых обстоятельствах метод должен распространяться на более чем один экран. Если метод длиной в сто строк, то что-то очень, очень неправильно.

Кодекс не должен быть повторяющимся. Двойная функциональность должна быть помещена в метод.

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

5
задан Jason 29 May 2009 в 18:46
поделиться

4 ответа

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

exec sp_msforeachdb 'use ? exec sp_spaceused'
6
ответ дан 18 December 2019 в 13:18
поделиться

Просмотрите sys.master_files таблица.

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

SELECT SUM(size*8192.0) AS totalsize
FROM sys.master_files;
4
ответ дан 18 December 2019 в 13:18
поделиться
exec sp_helpdb

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

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

use MyFunkyDb
go
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]'
2
ответ дан 18 December 2019 в 13:18
поделиться

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

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
2
ответ дан 18 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: