2014-10-07 3 views
0

데이터베이스 서버에는 2 개의 디스크가 있습니다. 디스크 C는 파일 탐색기에 따라 40GB의 여유 공간이 있고 디스크 D는 꽉 찼습니다. 데이터베이스는 두 드라이브에 저장된 파티션으로 구성됩니다. 나는 다음과 같은 SQL 명령을 실행하면 내가 MDF 파일에 남아있는 그 공간이 3GB에 있으며 매일 감소 참조 데이터베이스하드 드라이브 공간 대 데이터베이스 공간

select name 
, filename 
, convert(decimal(12,2),round(a.size/128.000,2)) as FileSizeMB 
, convert(decimal(12,2),round(fileproperty(a.name,'SpaceUsed')/128.000,2)) as SpaceUsedMB 
, convert(decimal(12,2),round((a.size-fileproperty(a.name,'SpaceUsed'))/128.000,2)) as FreeSpaceMB 
from dbo.sysfiles a 

에 남아있는 사용 가능한 공간을 볼 수 있습니다. 공간이 남아 있지 않으면 데이터베이스가 단순히 파쇄됩니까? 아니면 자동 성장하고 C 드라이브에서 사용할 수있는 공간을 확보 할 것인가? 어떻게하면 더 많은 하드 드라이브 공간을 자동으로 요청하도록 설정할 수 있습니까?

답변

0

일반적으로 데이터베이스는 파티션으로 구성되지 않습니다. 파일 그룹은 하나 이상의 파일을 가질 수있는 파일 그룹으로 구성됩니다. 세부 사항을 모른 채 일반적인 행동 만 설명 할 수 있습니다.

파일 그룹에 여러 파일이 활성 상태로 기록되어 있고이 파일이 두 드라이브에 분산되어있는 경우 SQL Server는 여유 공간이있는 디스크의 파일을 확장하고 쓰기를 수행합니다. 다른 경우에는 데이터베이스가 대부분 읽기 전용이됩니다 (여전히 기존 데이터의 일부 수정을 허용 할 수 있습니다 - 각 특정 페이지에 남아있는 여유 공간의 양에 따라 다름). 그러나 삭제는 여전히 가능할 수 있습니다. 그런 시나리오는 직접 테스트하지 않았습니다.

트랜잭션 로그의 공간이 부족한 경우가 특별한 경우입니다. 이 경우 SQL Server에서 데이터베이스를 확장 할 수 없으면 데이터베이스가 완전히 읽기 전용이됩니다.

+0

내가 파티션이라고 말했을 때 나는 파일을 의미했다. 우리의 데이터베이스는 잘 구성되어 있지 않고 모범 사례를 따르지 않습니다. 현재 각각 다른 파일 그룹에 속하며 2 개의 드라이브에 배치 된 16 개의 파일이 있습니다. 우리의 트랜잭션 로그에는 4Gb가 남았으므로 위험은 없습니다. 하지만 매일 메인 mdf 파일이 쓰기 작업에 사용되고 있으므로 여유 공간이 줄어들고 있습니다. 내 질문은 하드 드라이브가 40GB 이상 남아있는 것처럼 보이기 때문에이 mdf 파일에 더 많은 공간을 추가 할 수 있는지 여부입니다. –

+0

@ ConstantinosPapakonstantinou, 가장 문제가 많은 fliegroup에 다른 파일을 추가하여이 드라이브에 배치 할 수 있습니다. 사용 가능한 여유 공간이 더 균일해질 때까지 SQL Server는 거의 독점적으로 사용을 시작해야합니다. –