sql2005資料庫收縮
① 如何清空sql server 2005日誌文件
SQL Server資料庫長期使用後,日誌文件可能會變得非常大,佔用大量的系統資源,甚至可能導致「日誌滿」錯誤,使資料庫不可用。在這種情況下,我們需要定期清理資料庫。
清理SQL Server資料庫日誌的方法有幾種。最常用的方法是清空日誌。具體步驟如下:
1. 打開查詢分析器,輸入命令「DUMP TRANSACTION 資料庫名 WITH NO_LOG」,這將清空當前事務日誌。
2. 使用企業管理器,右鍵點擊你要壓縮的資料庫,選擇「所有任務」下的「收縮資料庫」選項,再選擇「收縮文件」,然後選擇日誌文件。在收縮方式中選擇「收縮至」,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定即可。
另一種方法雖然能夠生成新的日誌文件,但有一定的風險,因為SQL Server的日誌文件不是即時寫入資料庫主文件的。如果不當操作可能會導致數據丟失。
具體步驟如下:
1. 首先分離資料庫。在企業管理器中,選擇伺服器,然後選擇資料庫,右鍵點擊,選擇「分離資料庫」。
2. 刪除日誌文件。在企業管理器中,選擇伺服器,然後選擇資料庫,右鍵點擊,選擇「附加資料庫」。這將生成新的日誌文件,其大小通常只有500多K。
對於SQL 2000以下版本,可以使用以下方法防止日誌文件過大:
1. 在資料庫上右鍵點擊,選擇「屬性」,在「選項」中選擇「故障恢復-模型」,然後選擇「簡單模型」。
2. 使用SQL語句:「ALTER DATABASE 資料庫名 SET RECOVERY SIMPLE」。
此外,資料庫屬性中還包含與事務日誌增長相關的兩個選項:
1. Truncate log on checkpoint(此選項適用於SQL 7.0,SQL 2000中即故障恢復模型選擇為簡單模型)。當執行CHECKPOINT命令時,如果事務日誌文件超過其大小的70%,則將其內容清除。開發資料庫時常常將此選項設置為True,當資料庫文件或日誌文件的未用空間超過其大小的25%時,系統將自動縮減文件使其未用空間等於25%。當文件大小沒有超過其建立時的初始大小時,不會縮減文件。縮減後的文件也必須大於或等於其初始大小。對事務日誌文件的縮減只有在對其作備份時或將Truncate log on checkpoint選項設為True時才能進行。
需要注意的是,一般立成建立的資料庫默認屬性已設好,但如果遇到意外情況使資料庫屬性被更改,請用戶在清空日誌後,檢查資料庫的以上屬性,以防事務日誌再次充滿。
② SQL2005資料庫日誌文件LOG太大怎麼辦
Sqlserver2005下,日誌文件太大,使其減小的方法。
在打開SQL Server Management Studio並正常聯接SQL伺服器後,運行下面的三行:
( 注意將dbName代換為你的資料庫名。)
backup log dbName with NO_LOG
backup log dbName with TRUNCATE_ONLY
DBCC SHRINKDATABASE(dbName)
注意,在SQL 2008之後的版本以上方法無效,需將資料庫設為簡單模式後再進行收縮。
此外,在SQL Server Management Studio中,以視窗方法操作也可以,操作步驟:
第一步:截斷資料庫日誌,運行代碼:
BACKUP LOG 要收縮的資料庫名 WITH NO_LOG
第二步:收縮資料庫日誌文件:
1. 選擇要收縮的資料庫,點右鍵選擇任務-收縮-文件
2. 在彈出的頁面中,選擇文件類型為日誌
3.點確定。
③ sql收縮資料庫日誌的幾種辦法
在SQL Server 2000/2005中可以快速壓縮日誌log文件,通過SQL,
方法一:
--BigData為資料庫名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)
執行以上語句可以快速壓縮日誌文件到1M。
但是以上語句中前兩行在SQL Server 2008下無法執行 ,
第一行提示「Incorrect syntax near the keyword 'TRANSACTION'.」
第二行提示「One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. 」
第三行可以執行。但日誌log文件沒有任何變化。
原來SQL Server 2008已經不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005說明中明確:包含 DUMP 語句是為了向後兼容。而 後續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程序。 使用 BACKUP。
SQL Server 2008說明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 選項已廢止。使用完整恢復模式或大容量日誌恢復模式時,如果必須刪除資料庫中的日誌備份鏈,請切換至簡單恢復模式。有關詳細信息,請參閱有關從完整恢復模式或大容量日誌恢復模式切換的注意事項。
方法二:
useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true
方法三:(請提前備份文件!!)
Detach資料庫。
刪除log文件。
附加資料庫,選移除log文件,此時SQL Server 會自動重新建立一個512K 的Log 文件。
方法四:
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO