2017-04-26 2 views
2

SQL Server 2014를 사용하고 있습니다. 12GB 크기의 데이터베이스가 하나 있습니다. 내가 다음 쿼리를 사용하고 파일 크기를 볼 수 있습니다실제 데이터와 비교할 때 SQL Server 데이터베이스가 너무 큽니다.

SELECT ((size * 8)/1024), * 
FROM sys.sysfiles 

이것은 .mdf 파일 3 기가 바이트 보여줍니다, .ldf 파일 9기가바이트이다. 이것은 전체 크기는 단 40 MB입니다 보여줍니다

SELECT 
    t.NAME AS TableName, 
    i.name as indexName, 
    p.[Rows], 
    SUM(a.total_pages) as TotalPages, 
    SUM(a.used_pages) as UsedPages, 
    SUM(a.data_pages) as DataPages, 
    (SUM(a.total_pages) * 8)/1024 as TotalSpaceMB, 
    (SUM(a.used_pages) * 8)/1024 as UsedSpaceMB, 
    (SUM(a.data_pages) * 8)/1024 as DataSpaceMB 
FROM 
    sys.tables t 
INNER JOIN  
    sys.indexes i ON t.OBJECT_ID = i.object_id 
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id 
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id 
WHERE 
    t.NAME NOT LIKE 'dt%' AND 
    i.OBJECT_ID > 255 AND 
    i.index_id <= 1 
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name, p.[Rows] 
ORDER BY 
    5 desc 

:

은 그럼 실제 테이블의 크기를 보려면 다음 쿼리를 사용했다.

그러나 우리는 .mdf 파일에서 3GB의 나머지 공간을 차지하고 있는지 궁금합니다.

mdf 및 ldf 파일에서 많은 공간을 차지하고있는 개체를 개체를 찾으려면 도와주세요.

시간 내 주셔서 감사합니다.

+3

전체 복구 모드입니까? 데이터베이스에 어떤 종류의 유지 보수가 있습니까? 왜 귀하는 귀하의 질의에 특정 물체를 제외 시켰습니까? 전체 크기를 원하면 개체를 제외하면 안됩니다. 트랜잭션 로그가 상당히 크고 유지 관리되지 않는 것처럼 들립니다. –

+1

실제로 사용 된 데이터베이스의 양을 확인하십시오. 데이터베이스의 속성 창 또는 [sp_spaceused] (https://docs.microsoft.com/en-us/sql/relational-databases/databases/display-data-and-log-space-information- for-a-database) 저장 프로 시저. 테이블이 누락되었거나 어느 시점에 많은 양의 데이터를로드 한 다음 삭제했습니다.로그 파일의 크기는 그것이 꽤 오랫동안 백업되지 않았 음을 명확하게 보여줍니다. –

+0

안녕하세요 Sean Lange, 모든 개체를 포함하고 다시 시도했습니다. 여전히 동일한 크기를 보여줍니다. 그리고 데이터베이스 복구 모드는 "Simple"로 설정됩니다. –

답변

3

"sp_spaceused"의 미리 정의 된 저장 프로 시저를 사용하여 데이터베이스의 사용 공간을 확인하십시오.

USE <database_name> 
EXEC sp_spaceused 
그것은 다음과 같다 출력을 생성

...

enter image description here

은 데이터베이스 이름은 첫 번째 행의 첫 번째 열에 표시된다.

참고 ...

database_size = 예약 공간 + 미 할당 공간 + 로그 공백

로그 공간의 양을 표시하지 않는 sp_spaceused를

하지만 이것은 sp_spaceused를하여 생성 된 결과로부터 계산 될 수있다.

자세한 내용은 sp_spaceused의 DataRinger.com page을 참조하십시오.

이 페이지의 다음 그림은 전체 데이터베이스 크기를 구성하는 다양한 SQL Server 영역을 보여줍니다.

enter image description here

나는 데이터베이스의 트랜잭션 로그 파일은 데이터베이스에 공간에 대한 행방 불명을 차지 무엇이라고 생각한다.

"Manage the Size of the Transaction Log File"은 로그 파일에 대한 정보를 제공하는 Microsoft 페이지입니다. 이것은 데이터베이스에 도움이 될 수 있습니다.

+0

나는 "sp_spaceused"를 시도했지만 이것도 같은 결과를 반환합니다. 즉, 약 40MB의 데이터를 보여주는 것입니다. –

+0

"index_size"열 제목 아래에 어떤 값이 나열 되었습니까? – JohnH

+0

예약 \t : 65288 KB, 데이터 : 57648 KB, index_size : 3224 KB, 사용되지 않음 : \t \t 4416 KB –