我在SQL Server 2008 R2中有一個數據庫,其中有數百萬個文件存儲爲varbinary blob。我上週設置了一個過程來執行以下操作:SQL Server日誌文件在簡單恢復模式下填充
- 使用一些實體框架代碼來獲取具有blob的行(即實體)。
- 將blob流複製到對象存儲。
- 使用商店中的新對象ID更新數據庫中的實體。
我有30個線程經常這樣做,這個過程仍然需要幾天。幾天前,數據庫日誌文件已填滿,我相信它必須由此過程引起。我確定時間點備份對於此數據庫並不重要,並且將數據庫設置爲使用簡單恢復模式。然後昨天我再次從我的過程中得到錯誤,說日誌文件填滿了!這在簡單模式下如何實現?!任何想法我能做些什麼來阻止這種情況的發生?當我監視日誌文件時,SQL Server會讓它達到7%的飽和度,然後將其截斷爲零,所以我感到非常困惑。看起來好像當完整備份開始時日誌文件開始增長未被選中...
我根本沒有使用事務,至少沒有明確地說,我沒有剩餘的空間來分配。我不認爲你的回答告訴我爲什麼它只在完全備份期間增長,是嗎?我的猜測是,這與那裏沒有任何活動的休息點有關。 – influent
@influent我編輯了答案來澄清。 SQL Server不*需要一個沒有活動的休息點,但它確實需要在備份開始之前啓動的事務完成。 – TimothyAWiseman
謝謝。每條語句只更新一行,沒有批次。我明白現在發生了什麼(http://technet.microsoft.com/en-us/library/ms345414.aspx,ACTIVE_BACKUP_OR_RESTORE),但我不知道如何解決它,因爲我沒有任何剩餘空間。我可能必須在另一個驅動器上添加第二個日誌文件,以便完整備份可以在日誌文件沒有填滿的情況下完成。 – influent