문제
내 테이블 중 하나에 5000까지의 일부 레코드를 삽입했습니다.
그러나 이제이 레코드 가이 표에 삽입되어서는 안된다는 것을 알고 있습니다. 레코드를 하나씩 삭제할 수 없습니다. 또는 테이블의 이전 레코드에 대한 삽입 된 레코드를 구별 할 수 없습니다.
내 테이블이 원래 양식으로 돌아 오도록이 삽입 문장을 롤백하는 방법은 무엇입니까?
(나는 이것들이 로그를 사용하는 방법이라고 빨간색입니다. 그러나 나는 그것을 어떻게하는지 잘 모르겠습니다.)
감사.
해결책
당신 이이 일을했을 때 거래 내부에 있지 않다고 가정하면, 당신은 그 과정이 고통 스러울 것입니다. 관심있는 DBM의 풍미가 확실하지 않지만 SQL Server 2005에 대한 정보는 다음과 같습니다.
본질적으로,이를 수행하는 가장 쉬운 방법은 삽입물을 선행하는 백업에서 DB를 복원하는 것입니다.
다른 팁
다음은 시도 할 수있는 몇 가지 추가 아이디어입니다.
다른 데이터베이스에서 전체 백업을 복원 한 다음 다음과 같은 일부 타사 도구를 사용하여 테이블을 비교하십시오. ApexSQL 데이터 Diff 또는 DBFORGE 또는 레드 게이트
데이터베이스가 전체 복구 모드 인 경우 트랜잭션 로그를 읽으십시오. 이 주제에 대한 여러 게시물은 다음과 같습니다.
SQL Server Transaction Log Explorer/Analyzer
삽입문이 데이터베이스에 최선을 다하고 있다고 생각합니다. 그렇지 않으면 단순히 롤백을 할 수 있습니다.
감사 테이블이 있습니까? 감사 테이블이 있으면 특정 데이터 시간 동안 삽입 된 행을 식별 한 다음 삭제할 수 있습니다 ...
삽입 된 행의 기능이 다른 모든 것과 구별 될 수 있습니까? 예를 들어 삽입 날짜 또는 숫자 ID 열이 있습니까? 그렇다면 해당 기준에 따라 삭제를 수행하십시오.
그 외에는 Butterchicken이 옳습니다. 아마 약간 고통 스러울 것입니다. 그러나 나는 이전과 같은 트랜잭션 로그를 사용하여 다시 롤백하지 않았습니다.