2011-08-19 15 views
11

データベースで使用しているデータベースの容量を計算します。私はsp_spacefilesまたはクエリsys.databasesテーブルを使用することができますが、それは私に各データベースのための別々の結果を与えるだろうと私はExcelシートにコピーし、そこから合計を計算する必要があります。SQL Serverのすべてのデータベースサイズの合計を取得する

T-SQLで直接行う方法はありますか?

ありがとうございました。

答えて

19

あなたは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は、すべてのDBのすべてのファイルを一覧表示するサーバー全体のビューです。これはSQL Server 2005以降で利用可能です。

+0

これはまさに私が探していたものです。ありがとうございます。 SQL Server 2000の場合、@ jennifer-sが提供しているコードを使用する必要がありますね。 – olmed0

+0

ありがとうございます。シンプルで便利です。 –

2

ここで私がSQLServerCentral.comで見つけた回答です。このページには、さまざまなユーザーによって提供される2つの異なるスクリプトがあります。おそらくそれらのうちの1つが、あなたが探しているものを提供するでしょう。ここで

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

に我々は一般的に、リンクだけの答えを阻止しています。あなたの答えのテキストに抜粋やいくつかの例を入れてください。 – JNK

+0

申し訳ありません。スクリプトの1つを含むように編集されました。 –

+1

sp_MSforeachdbを注意してください。すべてのデータベースで常に動作するとは限りません(http://sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/a-more-reliable-and-more-flexible-sp-msforeachdbのコメントを参照してください)。 .aspx)。私はここからコピーすることを歓迎しています。http://www.mssqltips.com/tip.asp?tip=2201 –

0

念のために誰かがファイルごとの計算を必要とします:

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

リンクが死亡した場合の答えは無用であるので、結果はメガバイト

関連する問題