2012-09-20 4 views
8

없이 롤백하는 방법,이 쿼리 실행 :내가 큰 실수를 거래

update Contact set ContaPassword = '7FD736A3070CB9766' 

나는 WHERE 절을 잊었을하므로이 방법은 모든 사용자의 암호를 업데이트했습니다. 내가 생산 데이터의 어떤 종류를 시작하는 이유 :(

내가이 쿼리하기 전에 데이터를 복구 할 수있는 방법이 있나요? 당신이 BEGIN TRANSACTION/ROLLBACK의 외부를 실행 한 경우

+0

백업에서 복구하십시오. – Oded

+11

[여기에서 대답보기] (http://dba.stackexchange.com/a/998/3690) –

+0

SQL Server에는 Ctrl + Z가 없습니다. –

답변

6

당신은 변경 사항을 실행 취소 할 수 없습니다.이입니다 로 업데이트 :..

BEGIN TRANSACTION 

-- report the bad or undesired data condition before-hand 
SELECT ... 

-- change the data 
INSERT/UPDATE/DELETE ... 

-- ensure we changed a reasonable number of records; may not be accurate if table has triggers 
SELECT @@ROWCOUNT 

-- get the data condition afterwards and be sure it looks good. 
SELECT ... 

-- always start with this enabled first 
ROLLBACK 

-- don't do this until you are very sure the change looks good 
-- COMMIT 

마틴 스미스는이 주제에 this excellent post by Brent Ozar on dba.stackexchange.com을 지적 전체 복구 모드에서는 변경을 확인하려면 로그 파일을 검사 할 수 있습니다

을 또한, 오디드가 지적한대로, 당신 경우 백업을 가지고있다, 어렵지 않다. 원래 데이터로 되돌아갑니다. 백업을 어딘가에 복원하고 원본 데이터를 복사 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 실제로 데이터를 복구 했으므로 데이터를 복구했습니다. :) – kbaccouche