Получить общую сумму всех размеров баз данных в SQL Server - PullRequest
12 голосов
/ 19 августа 2011

Я хочу рассчитать, сколько места мои базы данных используют на сервере. Я мог бы использовать sp_spacefiles или запросить sys.databases таблицу, но это дало бы мне отдельные результаты для каждой базы данных, и мне пришлось бы скопировать их в таблицу Excel и вычислить сумму оттуда.

Есть ли прямой способ сделать это в T-SQL?

Спасибо.

Ответы [ 3 ]

24 голосов
/ 19 августа 2011

Вы можете запросить master.sys.master_files:

SELECT CONVERT(DECIMAL(10,2),(SUM(size * 8.00) / 1024.00 / 1024.00)) As UsedSpace
FROM master.sys.master_files

Это даст вам общее количество в ГБ.

Sys.Master_files - это представление всего сервера,перечисляет каждый файл в каждой БД.Он доступен начиная с SQL Server 2005 и более поздних версий.

2 голосов
/ 19 августа 2011

Вот ответ, который я нашел на SQLServerCentral.com. На этой странице есть несколько разных сценариев, предоставленных разными пользователями. Возможно, один из них предоставит то, что вы ищете.

http://www.sqlservercentral.com/Forums/Topic670489-146-1.aspx

Вот один из сценариев от MANU-J:

Create TABLE #db_file_information( 
fileid integer
, theFileGroup integer
, Total_Extents integer
, Used_Extents integer
, db varchar(30)
, file_Path_name varchar(300))

-- Get the size of the datafiles

insert into #db_file_information 
( fileid 
, theFileGroup 
, Total_Extents 
, Used_Extents 
, db 
, file_Path_name )
exec sp_MSForEachDB 'Use ?; DBCC showfilestats'

-- add two columns to the temp table

alter table #db_file_information add PercentFree as 
((Total_Extents-Used_Extents)*100/(Total_extents))

alter table #db_file_information add TotalSpace_MB as 
((Total_Extents*64)/1024)

alter table #db_file_information add UsedSpace_MB as 
((Used_Extents*64)/1024)

alter table #db_file_information add FreeSpace_MB as 
((Total_Extents*64)/1024-(Used_Extents*64)/1024)

select * from #db_file_information

drop table #db_file_information
0 голосов
/ 04 февраля 2014

На всякий случай, если кому-то нужен расчёт на файл:

select physical_name, size,
    CONVERT(DECIMAL(10,2),(size * 8.00) / 1024.00) As UsedSpace
from master.sys.master_files
order by physical_name

Результаты в мегабайтах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...