SQL Server 로그 파일을 잘라내는 명령은 무엇입니까?


답변:


130

쿼리 분석기 또는 이와 동등한 것을 잘 기억한다면 :

BACKUP LOG  databasename  WITH TRUNCATE_ONLY

DBCC SHRINKFILE (  databasename_Log, 1)

2
복구 모델이 FULL 인 경우 데이터베이스 복구 모델이 전체로 설정되어 있기 때문에 데이터베이스 복구 모델을 SIMPLE (Blorgbeard의 답변 에서처럼)로 설정하는 것보다 확실히 좋습니다.
Scott Whitlock

53
truncate_only는 SQL Server 2008에서 더 이상 사용되지 않으므로 db를 단순 복구로 전환해야합니다. msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx
Justin Moore

10
SQL Server 2012의 경우 작동하지만 WITH TRUNCATE_ONLY.
net_prog

4
net_prog가 말한 것에 덧붙여 SQL Server 2012의 경우 첫 번째 줄을 대신했습니다 BACKUP LOG DatabaseNameHere TO DISK='NUL:'.
Aaron Newton

'TRUNCATE_ONLY'은 (는) 인식 된 BACKUP 옵션이 아닙니다. (SQL Server 2019 RC1)
Tomasz Gandor

304

관리 스튜디오에서 :

  • 실제 환경에서는이 작업을 수행하지 말고 가능한 한 개발 데이터베이스를 축소하십시오.
    • 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고을 선택한 Properties다음을 선택합니다 Options.
    • "복구 모델"이 "전체"가 아닌 "단순"으로 설정되어 있는지 확인하십시오.
    • 확인을 클릭하십시오
  • 데이터베이스를 마우스 오른쪽 단추로 다시 클릭하고 Tasks-> Shrink->를 선택하십시오.Files
  • 파일 유형을 "로그"로 변경
  • 확인을 클릭하십시오.

또는 SQL을 수행하십시오.

 ALTER DATABASE mydatabase SET RECOVERY SIMPLE
 DBCC SHRINKFILE (mydatabase_Log, 1)

참조 : http://msdn.microsoft.com/en-us/library/ms189493.aspx


1
당신의 대답이 방금 저의 하루를 구했습니다! "오른쪽 클릭-작업-> 축소"옵션을 몰랐습니다. 감사합니다!
르네

7
실제 환경에서 무엇을합니까? 먼저 로그를 백업 하시겠습니까?
John Bubriski

1
DBA는 아니지만 로그를 백업하면 로그가 잘릴 것이라고 생각합니다. technet.microsoft.com/en-us/library/ms179478.aspx
Blorgbeard가

2
@JohnBubriski 단순 이외의 복구 모델을 사용하는 경우 로그는 데이터 복구 또는 트랜잭션 롤백의 기초입니다. 따라서 프로덕션 환경에서는 로그 파일을 축소하기 전에 먼저 이러한 로그를 백업해야합니다. 그렇지 않으면 실제 복구 가능성이 없습니다. 불행히도 복구 상황에 처한 경우 DB를 완전히 복구하려면 모든 트랜잭션 로그 백업을 다시로드해야합니다. 즐거운 시간, 확실하게! :)
정의

1
SQL Server 2012에서 나는 use mydatabase실행 하기 전에 해야했다dbcc shrinkfile
knb

62

SQL Server 2008의 경우 명령은 다음과 같습니다.

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
ALTER DATABASE ExampleDB SET RECOVERY FULL

이것은 14GB 로그 파일을 1MB로 줄였습니다.


5
SQL Server 2008에 적용 할 수없는 버전 및 허용되는 답변에 대한 질문이 모호하므로이 답변은 연령에 관계없이 여전히 유효합니다.
James Law

덕분에, 그것은 나를 DBCC SHRINKFILE과 반응하지 않은 큰 로그 파일 줄이기 도움이
기독교 Navelot

6
완료되면 복구 모델을 다시 전체로 변경하는 것을 잊지 마십시오!
Dan Bechard

이 작업 (또는 다른 잘림 옵션)을 수행하기 전에 백업해야합니다. 전체 백업을 수행하고 SSMS에서 '복사 전용 백업'을 확인하면 더 이상 로그가 필요하지 않습니다. (이것은 특정 시점 백업에 불과합니다).
Simon_Weaver

37

SQL 2008의 경우 nul장치에 로그를 백업 할 수 있습니다 .

BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10

그런 다음을 사용 DBCC SHRINKFILE하여 로그 파일을 자릅니다.


2
이것은 내 상황에서 작동하게 된 유일한 것입니다 ... TRUNCATE_ONLY와 함께 백업을 사용하려고 할 때 오류가 발생했습니다
TomXP411

참고 : SSD에서도 시간이 오래 걸릴 수 있습니다 (폐기하려면 로그를 읽어야합니다). 적당히 강화 된 Azure VM에서 30GB 로그 파일의 경우 40 %를 수행하는 데 10 분이 걸렸습니다. 처리 된 백분율을 보려면 SSMS에서 '메시지'테이크로 전환해야합니다.
Simon_Weaver

3

truncate_only와 dbcc shrinkfile 명령이있는 백업 로그 로그 이름


0

나를 위해 대답은 주석에 묻혀 있기 때문에. SQL Server 2012 이상에서는 다음을 사용할 수 있습니다.

BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)

-5

또 다른 옵션은 Management Studio를 통해 데이터베이스를 분리하는 것입니다. 그런 다음 로그 파일을 삭제하거나 이름을 바꾸고 나중에 삭제하십시오.

Management Studio로 돌아가서 데이터베이스를 다시 연결하십시오. 첨부 창의 파일 목록에서 로그 파일을 제거하십시오.

DB는 새로운 빈 로그 파일을 첨부하고 생성합니다. 모든 것이 정상인지 확인한 후 이름이 바뀐 로그 파일을 삭제할 수 있습니다.

프로덕션 데이터베이스에는 이것을 사용하지 않아야합니다.


4
절대 이러지 마! 로그에 아직 데이터 파일에 커밋되지 않은 데이터가있을 수 있습니다. 당신은 그런 데이터를 잃을 것입니다.
Paul

답변에서 프로덕션 환경에서 시도하지 말라고 경고하면 게시 할 가치가 없습니다.
Stan Shaw

9
나는 downvoter에 동의하지 않습니다-그것은 옵션입니다. 관리자는 시나리오를 이해하면됩니다. 예를 들어-미결 거래가 없으면 '커밋되지 않은'데이터가 없습니다.
제라드 ONeill

3
이것은 나를 위해 일한 유일한 솔루션입니다. 내 드라이브가 가득 차서 백업하거나 축소 할 수 없었으며 다른 작업이없는 것 같습니다. 감사합니다!
Brian

3
나는 동의한다; 모범 사례는 아니지만 Brian의 시나리오와 같은 다른 옵션이없는 경우 유용한 도구입니다.
ScottFoster1000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.