2009-08-04 6 views
3

트랜잭션을 사용하여 테이블의 일부 데이터를 업데이트 중입니다. 트랜잭션 로그는 데이터베이스의 ldf 파일에서 사용할 수 있습니다. 이제 실수로 사용자가 레코드를 삭제하는 트랜잭션을 커밋하고 커밋되어 데이터가 삭제됩니다. 특정 트랜잭션을 롤백 할 수있는 방법이 있습니다. 제발, 제안 해. 나는 정말로 당신의 도움에 감사 할 것입니다.트랜잭션 롤백

감사합니다.

답변

3

커밋 된 트랜잭션을 롤백 할 수 없습니다.

트랜잭션 커밋 전에 데이터베이스의 'point in time recovery'을 갖게됩니다. 사고가 발생하기 전에 마지막 전체 백업에서 시작한 다음 사고 이전에 최신 차등을 적용한 다음 관심 지점을 모두 기록하고 사고가 발생한 시점, 데이터베이스를 복구 할 때 적용 중지 더 이상의 로그. 링크에서 더 자세한 정보. 해당 시점 이후에 복구해야하는 다른 트랜잭션이있는 경우 오류가 발생한 시점에서 데이터베이스 복사본을 복원 한 다음 복사본 데이터베이스에서 삭제 된 데이터를 실제 데이터베이스로 수동으로 복사 할 수 있습니다.

+0

로 ApexSQL 작동 및이 방법에 의해 길을 잃을 수 있습니다 삭제 이후에 그 일을 잊지 마세요. 이벤트 이후 데이터베이스가 많이 사용 된 경우 이것은 매우 까다로워 질 것입니다. – djna

0

또한 이전 솔루션 (위)에서는 로그 복원 명령에서 "WITH STANDBY = 'filename'"옵션을 사용할 수 있습니다. 이렇게하면 복원 사이에 데이터베이스를 읽을 수 있으므로 데이터를 조금 더 쉽게 복구 할 수 있습니다.

SQL 2000이고 전체 백업 및 트랜잭션 로그 백업 파일이있는 경우 실행 취소 스크립트를 추출 할 수있는 도구가 있습니다. 여전히 복원 가능한 백업 및 트랜잭션 로그 파일을 사용하지만 트랜잭션 로그를 필터링하고 SQL을 스크립트로 추출 할 수 있습니다. 손에 복사본이 없지만 주요 SQL 도구 공급 업체 (예 : Quest, Red Gate, Idera)에서 무료로 사용할 수 있습니다.

3

모든 데이터가 16 진수 형식으로 저장되므로 fn_dblog 및 DBCC LOGINFO와 같은 내장 SQL Server 기능 및 명령을 사용하여 트랜잭션 로그를 읽는 것이 어려울 수 있습니다. 읽을 수있는 데이터를 얻으려면 수동 쿼리 및 변환이 필요합니다. 이것들은 문서화되지 않은 기능이며 상자 결과를 제공 할 수 없습니다. 이론적으로 당신은 삭제 기록을 추적하고 FULL 또는 BULK LOGGED 모델이 시점에 관한

를 사용해야 데이터의 복구에 관해서

recovery model도 매우 중요하다는 것을 유의하시기 바랍니다 삭제 된 것을 볼 수 있었다 SQL Server Management Studio 및 타사 도구 ApexSQL Log을 사용하는 절차를 설명하는 article을 살펴볼 수 있습니다. RedGate의 SQL Rescue와 같은 타사 도구도 있습니다. 트랜잭션 로그 백업의 전체 체인을 제공해야합니다. 즉, 전체 데이터베이스 백업 이후의 트랜잭션 로그 백업 체인 또는 전체 데이터베이스 백업, 차등 데이터베이스 백업 및 트랜잭션 로그 백업 체인을 포인트에서 지점까지 제공해야합니다 시간 내에 데이터 복구를 원합니다.

면책 조항 : 나는 지원 엔지니어

관련 문제