SQL Server 로그 파일의 크기를 줄이는 방법


10

데이터베이스 ldf 파일의 크기를 줄이는 방법을 알 수 없습니다.

DBA는 내가 사용해야한다고 말합니다 backup log dbname with truncate_only

그리고 그것이 SQL 쿼리 분석기에서 올바르게 실행되는 것처럼 보이지만 ldf 파일은 여전히 ​​2GB 이상입니다.

** 일부 의견과 아래의 답변에 근거한 설명. *** 문제가되는 특정 데이터베이스는 데이터베이스가 내 노트북에 있으며 개발 프로세스에만 사용합니다. 로그 파일이 전체 디스크를 유발하는 지점으로 커지고있었습니다. 생산 위험이 없습니다. 본인은 질문 한 방법과 수락 한 답변이 프로덕션 환경에서 위험하다는 것을 이해합니다. *


분명히 이것은 중복 질문입니까?
JamesRyan

나는 SHRINKFILE이 실패했을 때에 대해 질문하는 것을 찾았습니다. 당시에는 의미가 없었으므로이 질문을 게시했습니다. 나는 질문을 삭제하는 것을 고려했지만 같은 보트에 다른 사람들이있을 것이라고 생각했습니다. 중복 된 질문 (실제로 비슷한 질문이 아닌 동일한 질문을하는)을 발견하면이 질문을 삭제 해 드리겠습니다.
Ron Tuffin 2019

검색의 첫 페이지에는 약 8 개의 답변이 포함되어 있지만 원하는 것을 알아야합니다. 나는 그것을 정답의 일부로 너무 정기적으로보고, 나는 그것이 똑바로 그렇게 요구되지 않았다는 것에 놀랐다.
JamesRyan

대답은 데이터베이스의 복구 옵션에 따라 다릅니다 : 단순 또는 전체?
Richard

1
명확히 해줘서 고마워, 론 개발 데이터베이스이므로 로그 파일을 줄이면서 복구 모델을 SIMPLE로 변경해야합니다. 그렇지 않으면 문제가 다시 발생합니다.
BradC

답변:


11

오, 공포! 사람들에게 로그 파일을 축소해야한다고 말하지 마십시오!

이 상황에 처한 경우 다음 경우 중 하나 일 가능성이 큽니다.

  1. 데이터베이스가 전체 복구 모드에 있고 실제로 단순 모드에 있어야합니다
  2. 데이터베이스가 전체 복구 모드에 있으며 정기적 인 로그 백업을 수행해야합니다.
  3. 데이터베이스가 전체 복구 모드에 있고 어떤 이유로 든 로그 백업에 실패했습니다
  4. 로그 파일을 대량으로 처리하는 대규모 트랜잭션을 실행하고 있습니다.

이들 각각에 대한 답은 다음과 같습니다.

(1) 인 경우 데이터베이스를 단순 모드 인
경우 (2) 인
경우 정기 로그 백업을 예약하고 (3) 인
경우 예약 된 로그 백업을 수정 하면 (4) 인 경우에는 그렇게하지 마십시오. 더 작은 배치로 작업하십시오.

이들 중 어느 것도 (더 이상 사용되지 않음) "truncate_only를 가진 백업 로그 dbname"을 사용해야합니다.

대신 위의 기술 중 하나를 사용하여 로그 파일을 지우 면 다음과 같이 빈 로그를 축소하십시오.

DBCC SHRINKFILE ('log logical name', 2000)

항상 적절한 최종 크기를 지정하십시오. 그렇지 않으면 거의 0으로 줄어들고 다음에 필요할 때 성장하는 데 시간이 걸립니다.


너무나 받아 들여진 대답이 너무 빠르다. 이것은 인터뷰 중에 SQL 관리자를 제거하는 데 사용하는 질문 중 하나입니다. 그들이 truncate_only로 백업으로 돌아 오면 방망이에서 2 타격으로 계산됩니다.
Jim B

2
나는 절대적으로해야 할 일이 파일을 축소한다는 데 동의합니다. 올바른 유지 보수는이를 필요로하지 않습니다. 그러나 일단 커지고 더 작게하려면 축소해야합니다. 그러나 축소 할 때는 파일을 가능한 작게 축소 한 다음 8GB 단위로 올바른 크기로 파일을 늘리는 것이 좋습니다. 파일의 VLF 수를 최적화합니다. -sqlskills.com/BLOGS/KIMBERLY/post/…를 참조하십시오 .
브라이언 나이트

1
흥미로운 링크는 트랜스 로그가 8Gb 이상인 경우에만 적용되는 것으로 보입니다. 나는 BradC의 요점 (또는 적어도 내 것)은 네가 로그 파일을 축소시키는 비상 사태가 있지만 악명 높은 백업 / w trunc를 실행하면 축소 파일이 뒤 따르면 백업 체인을 막았다는 것을 알아야합니다 (중요하지 않은 것이기 때문에) 디스크 공간 문제 외에도 데이터베이스 디자인 관점이나 아키텍처 문제로 인해 심각한 SQL Server 문제가 발생했을 가능성이 큽니다. 근본적인 단서를 고치지 않으면 서 시간을 최대한 벌 수 있습니다.
Jim B

4

"truncate_only로 백업"을 수행 한 후 다음 명령을 실행하여 축소해야합니다.

dbcc SHRINKFILE (logfilename,shrink_tosize)

예 :

dbcc SHRINKFILE (mydatabase_Log,512)

3

위에서 작성한 스크립트는 재사용을 위해 로그 내용을 표시합니다. 해당 스크립트를 다음과 같이 수행하십시오.

USE <database>;

DBCC SHRINKFILE (<log logical file name>)

그것은 당신을 위해 그것을 축소합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.