소개 Microsoft SQL Server 2005에서는 데이터베이스의 트랜잭션 로그 파일을 축소하여 사용되지 않는 페이지를 제거할 수 있습니다. 데이터베이스 엔진은 공간을 효율적으로 재사용합니다. 그러나 트랜잭션 로그 파일이 예기치 않게 커지면 트랜잭션 로그 파일을 수동으로 축소해야 할 수도 있습니다.
이 문서에서는 DBCC SHRINKFILE 문을 사용하여 전체 복구 모델에서 SQL Server 2005 데이터베이스의 트랜잭션 로그 파일을 수동으로 축소하는 방법을 설명합니다. SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 데 사용하는 방법은 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 데 사용하는 방법과 다를 수 있습니다. SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 방법에 대한 자세한 내용을 보려면 아래 문서 번호를 클릭하여 Microsoft 기술 자료의 해당 문서를 참조하십시오.
272318 ( http://support.microsoft.com/kb/272318/ ) INF: DBCC SHRINKFILE을 사용하여 SQL Server 2000에서 트랜잭션 로그 축소
위로 가기
추가 정보 SQL Server 2005에서 축소 작업(DBCC SHRINKFILE)은 지정된 트랜잭션 로그 파일을 필요한 크기로 즉시 축소하려고 시도합니다. 전체 복구 모델에서 트랜잭션 로그 파일을 수동으로 축소하려면 먼저 트랜잭션 로그 파일을 백업하세요. 그런 다음 DBCC SHRINKFILE 문을 사용하여 트랜잭션 로그 파일을 축소합니다.
일반적으로 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것이 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것보다 빠릅니다. 그 이유는 SQL Server 2005 로그 관리자가 물리적 디스크 저장 순서에 따라 비활성 가상 로그 파일을 생성하거나 재사용하기 때문입니다. 따라서 트랜잭션 로그 파일의 비활성 부분은 일반적으로 파일 끝에 위치합니다.
예를 들어 트랜잭션 로그 파일에는 100개의 가상 로그 파일이 포함될 수 있지만 가상 로그 파일은 2개만 사용할 수 있습니다. SQL Server 2000은 트랜잭션 로그 파일의 시작 부분에 사용되는 첫 번째 가상 로그 파일과 트랜잭션 로그 파일의 중간에 사용되는 두 번째 가상 로그 파일을 저장합니다. 트랜잭션 로그 파일을 2개의 가상 로그 파일로 축소하기 위해 SQL Server는 두 번째 가상 로그 파일의 나머지 부분을 가상 로그 항목으로 채웁니다. SQL Server는 논리 로그의 시작 부분을 로그 관리자가 지정한 다음 사용 가능한 가상 로그 파일로 이동합니다. 로그 관리자는 마지막 활성 가상 로그 파일 이전에 트랜잭션 로그 파일 중간에 가상 로그 파일을 생성할 수 있습니다. 이 경우 트랜잭션 로그 파일을 2개의 가상 로그 파일로 성공적으로 축소하려면 여러 로그 백업 작업과 여러 축소 작업을 사용해야 합니다. 최악의 시나리오에서는 트랜잭션 로그 파일을 2개의 가상 로그 파일로 성공적으로 축소하기 위해 50개의 로그 백업 작업과 50개의 축소 작업을 사용해야 할 수도 있습니다.
그러나 SQL Server 2005에서는 DBCC SHRINKFILE 문을 실행하여 트랜잭션 로그 파일을 2개의 가상 로그 파일로 즉시 축소할 수 있습니다. 이는 SQL Server 2005 로그 관리자가 실제 디스크에 저장된 순서대로 2개의 가상 로그 파일을 생성하기 때문입니다. 두 가상 로그 파일은 모두 트랜잭션 로그 파일의 시작 부분에 있습니다.
SQL Server 2005에서 여유 공간이 거의 없는 트랜잭션 로그 파일을 축소하려고 하면 다른 로그 백업 작업을 수행해야 합니다. 이 추가 로그 백업 작업은 트랜잭션 로그 파일을 더 작은 크기로 자릅니다. SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 경우 위의 세 단계를 수행하는 것 외에도 이 로그 백업 작업도 수행해야 합니다. 자세한 내용은 "소개" 절에 언급된 Microsoft 기술 자료 문서를 참조하십시오. SQL Server 2005에서 여유 공간이 거의 없는 트랜잭션 로그 파일을 축소하려면 다음 단계를 수행하십시오. 1. 대부분의 활성 가상 로그 파일이 비활성화되도록 트랜잭션 로그 파일을 백업합니다. 따라서 비활성 가상 로그 파일은 이후 단계에서 삭제할 수 있습니다. 이렇게 하려면 다음 Transact-SQL 문과 유사한 Transact-SQL 문을 실행하세요. 백업 로그 <DatabaseName> TO DISK = '<BackupFile>'
참고: 이 문에서 <DatabaseName>은 백업할 데이터베이스 이름의 자리 표시자입니다. 이 문에서 <BackupFile>은 백업 파일의 전체 경로에 대한 자리 표시자입니다.
예를 들어 다음 Transact-SQL 문을 실행합니다. 디스크에 대한 백업 로그 TestDB='C:TestDB1.bak'
2. 트랜잭션 로그 파일을 축소합니다. 이렇게 하려면 다음 Transact-SQL 문과 유사한 Transact-SQL 문을 실행하세요. NO_INFOMSGS를 사용한 DBCC SHRINKFILE(<파일 이름>, <대상 크기>)
참고: 이 문에서 <FileName>은 트랜잭션 로그 파일 이름에 대한 자리 표시자입니다. 이 문에서 <TargetSize>는 트랜잭션 로그 파일의 대상 크기에 대한 자리 표시자입니다. 대상 크기는 합리적이어야 합니다. 예를 들어 트랜잭션 로그 파일을 2개 미만의 가상 로그 파일로 축소할 수 없습니다.
3. DBCC SHRINKFILE 문이 트랜잭션 로그 파일을 대상 크기로 축소하지 않는 경우 1단계에서 언급한 BACKUP LOG 문을 실행하여 더 많은 가상 로그 파일을 비활성화합니다.
4. 2단계에서 언급한 DBCC SHRINKFILE 문을 실행합니다. 이 작업을 수행한 후에는 트랜잭션 로그 파일이 대상 크기에 가까워야 합니다.
요약하자면, SQL Server 2005에서는 로그 관리자가 다음 가상 로그 파일을 선택하는 데 사용하는 알고리즘이 변경되었습니다. 따라서 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것은 다음과 같은 점에서 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것과 다릅니다. • 로그 파일에 여유 공간이 많은 경우 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것이 더 빠릅니다. SQL Server 2000에서 트랜잭션 로그 파일 축소 트랜잭션 로그 파일을 축소하는 것이 더 빠릅니다.
• SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것은 로그 파일에 여유 공간이 없는 경우 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것과 같습니다.
• SQL Server 2005에서 트랜잭션 로그 파일을 축소하려면 로그 파일에 여유 공간이 거의 없는 경우 SQL Server 2000에서 이 작업을 수행하는 것보다 로그 백업 작업이 한 번 더 필요합니다.