Вот хороший сценарий, который я беззастенчиво разорвал отсюда :
use [Insert DB Name]
select
a.FILEID,
[FILE_SIZE_MB] =
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a
Это хорошо, потому что это даст вам свободное место в каждом файле БД (у вас может быть несколько файлов, и, возможно, кто-то настроит его для размещения некоторых объектов в каждом), а также свободный размер.
Например, у вас есть файл данных 4 ГБ, который имеет 3 ГБ свободного места. Может быть, у вас есть 1 MDF без большого количества данных, но NDF с большим количеством данных. Этот запрос сообщит вам свободный размер каждого файла и для какой БД этот файл выделен. Не забудьте добавить все «SPACE_USED_MB» для каждой БД, чтобы получить общий размер.
Удачи!
Редактировать:
Удалена неподдерживаемая и глючная команда, которая, как мне показалось, могла бы оставить здесь для этого запроса. :(