2015-01-15 25 views
0

我想從數據庫表中刪除數百萬條記錄。爲什麼在WHILE循環的每次迭代中提交事務不會阻止事務日誌長大?

我使用了一個WHILE循環,以便在每次迭代中刪除TOP 25000行並提交它們。

我的假設是,如果我刪除部分行並在每次迭代中提交,我會阻止事務日誌長大。

我做類似下面

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的' 已滿。'

我應該怎麼做才能防止事務日誌長大? -Committing不會刪除它?

+1

什麼是數據庫的恢復模式?它需要很簡單。而且你在這裏不需要交易。一個陳述是一個交易。 – Paparazzi

回答

0

提交事務寫入日誌,因爲當您通過日誌還原數據庫時,它將從已提交的事務中恢復。

相關問題