답변:
여기 내가 뻔뻔스럽게 찢어진 좋은 스크립트가 있습니다 .
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 데이터 파일이 있습니다. 데이터가 많지 않은 MDF가 하나이지만 데이터가 많은 NDF 일 수 있습니다. 이 쿼리는 각 파일의 사용 가능한 크기와 해당 파일이 할당 된 DB를 알려줍니다. 총 크기를 얻으려면 각 DB에 대해 'SPACE_USED_MB'를 모두 추가해야합니다.
행운을 빕니다!
편집 : 이 쿼리에 대한 여기에 게시하여 벗어날 수 있다고 생각하는 지원되지 않는 버그가있는 명령을 제거했습니다. :(
sp_msforeachdb
!?!?
sysaltfiles
(각 데이터베이스로 이동할 필요가 없음).