[sql-server] 트랜잭션 로그 비활성화

Oracle에는 트랜잭션이 기록되지 않도록 실행할 수있는 SQL 명령이 있습니다. SQL Server 2008에도 비슷한 것이 있습니까?

내 시나리오 : 서버 (Dev, QA, Prod)에 Tx 로그가 필요하지만 개발자 컴퓨터에서는 이러한 로그없이 수행 할 수 있습니다.



답변

어떤 상황에서도 SQL Server에서 트랜잭션 로그 없이는 할 수 없습니다. 엔진은 단순히 작동하지 않습니다.

dev 컴퓨터에서 복구 모델을 SIMPLE로 설정할 수 있습니다. 그러면 tran 로그 백업이 완료되지 않은 경우 트랜잭션 로그 팽창을 방지 할 수 있습니다.

ALTER DATABASE MyDB SET RECOVERY SIMPLE;


답변

SQL Server가 작동하려면 트랜잭션 로그가 필요합니다.

즉, 트랜잭션 로그에는 두 가지 작동 모드가 있습니다.

  • 단순한
  • 완전한

전체 모드 에서는 데이터베이스를 백업 할 때까지 트랜잭션 로그가 계속 증가합니다. 에서 단순 모드 : 트랜잭션 로그 공간은 모든 ‘재활용’되는 검사 점을 .

전체 복구 모델 에서 데이터베이스를 실행해야하는 사람은 거의 없습니다 . 전체 모델을 사용하는 유일한 요점은 데이터베이스를 하루에 여러 번 백업하고 전체 데이터베이스를 백업하는 데 너무 오래 걸리므로 트랜잭션 로그 만 백업하는 것입니다.

트랜잭션 로그는 하루 종일 계속 증가하며 계속 백업합니다. 그날 밤 당신이 당신의 전체 백업을 수행하고 SQL 서버는 다음 자릅니다 트랜잭션 로그는 트랜잭션 로그 파일에 할당 된 공간을 다시 사용하기 시작합니다.

전체 데이터베이스 백업 만 수행 하는 경우 전체 복구 모드를 원하지 않습니다.


답변

위에서 언급하지 않은 세 번째 복구 모드가 있습니다. 복구 모드는 궁극적으로 LDF 파일의 크기와 기록 방법을 결정합니다. 모든 유형의 대량 삽입을 수행하려는 경우 DB를 “BULK / LOGGED”로 설정해야합니다. 이렇게하면 벌크 인서트가 빠르게 이동하고 즉시 변경할 수 있습니다.

그렇게하려면

USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;

다시 변경하려면 :

USE master ;
ALTER DATABASE model SET RECOVERY FULL ;

누군가가 LDF를 원하지 않는 이유에 대한 대화에 추가하는 정신으로 다음을 추가합니다. 우리는 다차원 모델링을 수행합니다. 본질적으로 우리는 외부 프로그램을 사용하여 대량으로 처리되는 대규모 변수 저장소로 DB를 사용합니다. 우리는 롤백을 요구하지 않습니다. 모든 로깅을 켜서 성능 향상을 얻을 수 있다면 심장 박동으로 가져갈 것입니다.


답변

Tx 로그의 문제점은 무엇입니까? 자라나요? 그런 다음 체크 포인트 옵션에서 자르기를 설정하십시오.

Microsoft 문서에서 :

SQL Server 2000 또는 SQL Server 2005에서 “단순”복구 모델은 이전 버전의 SQL Server에서 “검사 점에서 로그 자르기”와 동일합니다. 서버에서 체크 포인트가 수행 될 때마다 트랜잭션 로그가 잘 리면 데이터베이스 복구에 로그를 사용할 수 없습니다. 전체 데이터베이스 백업 만 사용하여 데이터를 복원 할 수 있습니다. “단순”복구 모델을 사용하면 트랜잭션 로그 백업이 비활성화됩니다.


답변

이것이 공간을 절약하기 위해 개발 머신에만 해당되는 경우 간단한 복구 모드로 이동하면 정상적으로 수행됩니다.

프로덕션 컴퓨터에서는 데이터베이스를 전체 복구 모드로 유지하는 것이 좋습니다. 이렇게하면 필요한 경우 특정 시점 복구를 수행 할 수 있습니다.

또한 데이터베이스를 전체 복구 모드로 설정하면 트랜잭션 로그를 읽어 실수로 인한 업데이트 및 삭제를 실행 취소 할 수 있습니다. 아래 또는 자세한 내용을 참조하십시오.

SQL Server 2005에서 UPDATE 쿼리를 롤백하려면 어떻게합니까?

SQL Server 2008에서 로그 파일 (* .LDF) 읽기

프로덕션 시스템에서 공간이 문제가되는 경우 빈번한 트랜잭션 로그 백업을 생성하십시오.


답변