.LDF 파일을 유지해야합니까?


9

매달 프로덕션 데이터베이스의 월말 스냅 샷을 만듭니다. 이 월말 스냅 샷은보고 목적으로 만 작성되었으며 삽입, 업데이트 또는 삭제는 없습니다. 이러한 각 스냅 샷에는 .MDF.LDF파일이 있습니다.

.LDF파일 을 삭제 하고 서버의 공간을 확보하고 싶습니다 . .LDF파일 을 보관해야하는 이유가 있습니까?

설명:

프로덕션 데이터베이스는 매일 밤 다른 시스템에서 파일을 추출하여 재생성됩니다. 프로덕션 데이터베이스에 대해서만보고합니다. 업데이트는 수행되지 않습니다.

야간 프로세스 :
알 수있는 내용부터 ...
매일 밤 데이터베이스 테이블이 잘립니다
. 테이블은 일련의 대량 삽입 문을 통해 채워집니다.
인덱스가 다시 작성됩니다.

답변:


16

로그 파일을 삭제해서는 안됩니다. 로그없이 데이터 파일을 다시 연결하려고하면 SQL Server에서 기술적으로 해당 파일을 다시 만들 수 있지만 데이터베이스를 분리 할 때 열린 트랜잭션이있는 것처럼 몇 가지 잠재적 인 문제가 있습니다. 이 경우 총 데이터 손실이 발생합니다.

공간을 차지하고 로그 파일을 삭제하지 마십시오 . 당신은 그 문제를 요구하고 있습니다.

참조 트랜잭션 로그에이 문서 , 특히 "로그 그릇된"부분을.


9

다른 답변 에서 언급했듯이 로그 파일을 삭제할 수 없습니다. 당신이 할 수있는 일은 데이터베이스를로 설정하는 것 READ_ONLY입니다. 의 데이터베이스를 사용하면 READ_ONLY수정할 수 없으며 로그 파일이 커지지 않습니다. 로그 파일의 크기를 최소 크기로 줄이고 최소 설치 공간 목표를 달성 할 수 있습니다. 데이터베이스를 설정하려면 READ_ONLY다음 명령 을 실행하십시오.

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

데이터베이스를로 READ_WRITE변경하고 필요한 사항을 변경 한 다음 필요할 READ_ONLY때 언제든지 설정할 수 있습니다.

데이터베이스의 ACID 특성을 유지하려면 로그 파일이 여전히 필요합니다.


2

실제로 mdf 파일을 사용하여 데이터베이스를 작성할 수 있습니다. 그것은이다 sp_attach_single_file_db (Transact-SQL)를 참조하십시오 명령. 향후 버전의 Microsoft SQL Server에서 제거 될 것입니다. 그러나 LDF 파일을 삭제하는 것은 현명하지 않습니다. 상어가 옳습니다. '문제가 있습니다.' 또 다른 관점-ldf 파일이 방대합니까? 그들이 있다면, 그들에 대해 뭔가를 할 수 있습니다.

  1. 데이터베이스를 단순 복구 모델 로 설정하십시오 . 트랜잭션을 롤백하지 않으려는 경우에만이를 수행 할 수 있습니다.
  2. MDF 및 LDF 파일을 작성하는 대신 전체 데이터베이스 백업 (.BAK) 파일을 작성하십시오. 더 작은 tnan MDF + LDF 일 것입니다

-3

다음은 LDF 파일을 축소하기 위해 제시 한 솔루션입니다.

  1. 데이터베이스 분리
  2. LDF 파일 이름을 * _old.ldf로 바꾸십시오.
  3. 데이터베이스 첨부
  4. 누락 된 LDF에 대한 참조를 제거하십시오.

크기가 504K 인 LDF 파일을 다시 만듭니다.

  1. * _old.ldf 삭제
  2. 빈 재활용 통

이는 서버에서 상당한 양의 디스크 공간을 확보했습니다. 이러한 데이터베이스는 모두 정적보고 데이터베이스이기 때문에 우리에게 효과적입니다. 이러한 데이터베이스에 대해서는 삽입, 업데이트 또는 삭제가 수행되지 않습니다.

업데이트 2019-09-24 : 예, 이것이 정말 나쁜 생각이라는 데 동의합니다. 나는 거의 즉시 이것을 중단했다. 채우기 비율 100을 사용하여 모든 인덱스를 다시 작성했습니다. .ldf 파일 만 축소하십시오. 그리고 모든 데이터베이스를 읽기 전용으로 변경했습니다.


6
와우, 이것은 정말 나쁜 생각입니다. 데이터베이스가 성공적으로 분리되지 않거나 1과 3 사이의 어딘가에서 손실되거나 손상되면 어떻게됩니까? 넌 망했어. 데이터베이스의 ZERO 사본이 있습니다.
Aaron Bertrand

3
이를 수행하는 올바른 방법은 다음과 같습니다. 1. 데이터베이스의 COPY_ONLY 백업을 수행하십시오. 2.보고 서버에서이를 복원하십시오. 3. 복구를 단순으로 설정하고 복원 된 사본을 읽기 전용으로 표시하십시오. 4. 로그 파일을 수동으로 축소하십시오. 예, 그 동안 공간이 필요하지만 직업을 유지해야합니다!
Aaron Bertrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.