2015-01-15 11 views
0

데이터베이스 테이블에서 수백만 개의 레코드를 삭제하려고합니다.WHILE 루프를 반복 할 때마다 트랜잭션을 커밋해도 트랜잭션 로그가 커지지 않습니다.

커밋과 함께 모든 반복에서 TOP 25000 행을 삭제하기 위해 WHILE 루프를 사용했습니다.

제 생각에 행의 일부를 삭제하고 모든 반복을 커밋하면 트랜잭션 로그가 커지지 않습니다.

WHILE (1=1) 
BEGIN 

-- Logic to BREAK the loop like if no rows left to delete 
IF ... 
    BEGIN TRANSACTION 
    DELETE TOP 25000 
    FROM FooBar 
    Where SomeDate<AnotherDate 
    COMMIT 

END 

하는 내가 '데이터베이스의 트랜잭션 로그'는 foobar '가득를 종료하고 그러나 :

나는 다음과 같은 뭔가를했다. '

트랜잭션 로그가 커지지 않도록하려면 어떻게해야합니까? - 삭제해도 지워지지 않습니까?

+1

데이터베이스의 복구 모드는 무엇입니까? 그것은 간단해야합니다. 그리고 여기서 거래가 필요 없습니다. 단일 명령문은 트랜잭션입니다. – Paparazzi

답변

0

Commiting Transaction은 로그로 데이터베이스를 복원 할 때 커밋 된 트랜잭션에서 복구되므로 로그를 씁니다.