回答:
ここに私が恥知らずにここからリッピングした良いスクリプトがあります:
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
これは、各DBファイルの空き容量(複数のファイルがあり、おそらく誰かがいくつかのオブジェクトをそれぞれに配置するように設定している)と空きサイズを提供するので、これは良いことです。
たとえば、3GBの空き容量がある4GBのデータファイルがあるとします。たぶん、1つのMDFに大量のデータはありませんが、NDFには大量のデータがあります。このクエリは、各ファイルの空きサイズとそのファイルが割り当てられているDBを通知します。合計サイズを取得するには、各DBの「SPACE_USED_MB」をすべて合計することを忘れないでください。
幸運を!
編集: このクエリのためにここに投稿することで逃げることができると思っていた、サポートされていないバグの多いコマンドを削除しました。:(
sysaltfiles
(これにより、各データベースにアクセスする必要がまったくなくなります)。