Answers:
这是我从这里毫不客气地撕下来的一个好脚本:
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文件中的可用空间(您可能有多个文件,也许有人设置了每个文件中的一些对象)以及可用大小。
例如,您有一个4GB的数据文件,其中有3GB的可用空间。也许您有1个MDF,但是没有很多数据,而NDF却有很多数据。该查询将告诉您每个文件的可用大小以及该文件分配给的数据库。记住为每个数据库加所有“ SPACE_USED_MB”,以得到总大小。
祝好运!
编辑: 删除了一个我认为我可以摆脱在此查询中发布的不支持和错误的命令。:(
sp_msforeachdb
!?!?
sysaltfiles
(这根本不需要进入每个数据库)。