首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 記錄檔縮小失效終極解法:Detach → 刪除記錄檔 → Attach 重建

     編輯:關於SqlServer

問題場景

資料庫 `CNBlogsText` 記錄檔佔 23GB,實際記錄 <1GB。執行 `DBCC SHRINKFILE` 報錯:

Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.

常規方法失效

切換簡單模式 → Shrink → 切回完整模式,本案**無效**。

終極解法(需停機)

  1. 阻擋所有寫入(應用停止、設為單人模式或離線)。
  2. `ALTER DATABASE CNBlogsText SET OFFLINE WITH ROLLBACK IMMEDIATE;` → `EXEC sp_detach_db 'CNBlogsText';`
  3. **刪除或重命名** 實體記錄檔(`.ldf`)。
  4. SSMS 執行 `Attach`,選擇資料檔 (`.mdf`),系統提示找不到記錄檔。
  5. Attach 時提示找不到記錄檔
  6. 在對話框中**移除**該遺失的記錄檔項目 → 確定。SQL Server 會在資料檔目錄**自動建立新記錄檔**(預設 1MB,自動成長)。
  7. 若需將記錄檔放置其他磁碟:再次 Detach → 移動實體記錄檔 → Attach 指定新路徑。

缺點與風險

  • 操作期間資料庫**完全不可用**。
  • 若資料檔也有損壞,Attach 會失敗。
  • 會丟失記錄檔內未備份的交易(若為完整模式且無近期記錄備份)。

適用時機

記錄檔異常膨脹、常規 Shrink 失效、可接受短暫停機、且有完整備份可恢復至一致性點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved