Получить общую сумму всех баз данных на SQL Server
Я хочу рассчитать, сколько пространства используют мои базы данных на сервере. Я мог бы использовать таблицу sp_spacefiles
или query sys.databases
, но это дало бы мне отдельные результаты для каждой базы данных, и мне пришлось бы скопировать ее в лист excel и вычислить сумму оттуда.
Есть ли прямой способ сделать это в T-SQL?
Спасибо.
Ответы
Ответ 1
Вы можете запросить master.sys.master_files
:
SELECT CONVERT(DECIMAL(10,2),(SUM(size * 8.00) / 1024.00 / 1024.00)) As UsedSpace
FROM master.sys.master_files
Это даст вам общее количество в GB.
Sys.Master_files
- это общее представление на сервере, в котором перечислены все файлы в каждом БД. Он доступен с SQL Server 2005 и далее.
Ответ 2
Вот ответ, который я нашел на 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
Ответ 3
На всякий случай кому-то нужен калькулятор для каждого файла:
select physical_name, size,
CONVERT(DECIMAL(10,2),(size * 8.00) / 1024.00) As UsedSpace
from master.sys.master_files
order by physical_name
Результаты в MBytes