2010-11-22 6 views
2

테스트 환경이므로 업데이트 쿼리를 테스트하기 위해 일부 데이터가 필요했지만 실수로 모든 행의 열을 업데이트하여 잘못된 데이터를 포함하게되었습니다. 백업을 사용하여 데이터를 이전 인스턴스로 복원해야합니까, 아니면 활용할 수있는 트랜잭션 로그가있는 비밀이 있습니까?데이터베이스에 작성한 업데이트 문을 실행 취소하는 방법

미리 감사드립니다.

+0

BEGIN TRAN T1 ... COMMIT TRAN T1 또는 Rollback..etc와 같이 트랜잭션을 사용해야합니다. – JonH

답변

5

특정 시점까지 복구 할 수있는 트랜잭션 로그라는 비공개 트랜잭션 로그가 있습니다. Here's how... ldf 확장자를 가진 성가신 작은 파일은 일반적인 db 데이터 인 .mdf 파일과 달리 트랜잭션 로그입니다.

트랜잭션 로그 (ldf)를 자르지 않거나 그렇지 않으면 찾으려는 유형의 복원 (실행 취소)을 정확하게 수행 할 수 있어야합니다.

-2

사람 ... 미안 메신저하지만 그것은 나를 웃게 : 당신이 문구 질문 ... 내가 아는 한

, 당신은 업데이트 된 데이터 :(

희망을 취소하지 못할 D 방식이 내가 . SQL 서버에 대한 위험한 것들 중 하나는 오라클 사용하면 물리적으로 커밋해야한다는 트랜잭션, 롤백을 시작 커밋 -.. '당신이 트랜잭션 블록에 SQL을 포장하지 않는

행운

+2

-1 예, 그것은 귀여운 질문이었고 이것은 귀여운 대답이 아닙니다. 그것은 틀렸고 기껏해야 의견이었을 것입니다. SO Rami에 오신 것을 환영합니다. 그러나 plz는 FAQ를 읽었습니다. 고마워. –

+0

작전, 죄송합니다. 정확히 교육 목적으로 –

+0

, 질문에 대해 우스운 이야기는 무엇입니까? – Haoest

1

하지 틀렸다 거래가 훨씬 안전합니다.

+0

너무 늦었습니다. – Haoest

+0

앞으로도 유용 할 것입니다. 자동 커밋을 끕니다. 자신의 트랜잭션을 관리해야합니다. http://www.dataprix.com/en/blogs/il-masacratore/sql08-how-disable-autocommit-sql-server-management-studio – hoakey

2

데이터베이스가 전체 복구 모드에있는 경우 this one과 같은 타사 도구를 사용하여 트랜잭션 로그를 읽거나 DBCC LOG 명령을 사용하여 직접 시도 할 수 있습니다.

db가 전체 복구 중일 경우 많은 데이터가 트랜잭션 로그에 저장되지만 MS는 공식 문서를 연마하지 않았으며 복구 목적이 아니기 때문에 트랜잭션이 올바르게 커밋되기 때문에 쉽게 읽을 수 없습니다.

그러나 유감스럽게도 유료 도구이지만 유료 도구를 사용하거나 DBCC 로그 결과를 직접 읽는 것과 같은 방법으로 해결할 수 있습니다.

관련 문제