具體方法有3種。
方法一:
第一步:
backup log database_name with no_log
或 backup log database_name with truncate_only
-- no_log和truncate_only是在這裡是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有資料和日誌文件,執行:
dbcc shrinkdatabase (database_name,[,target_percent])
-- database_name是要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫檔案中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的資料或日誌文件,執行
dbcc shrinkfile(file_id,[,target_size])
-- file_id是要縮小的檔案的識別(ID) 號,若要取得檔案ID,請使用FILE_ID 函數或在目前資料庫中搜尋sysfiles;target_size是用兆位元組表示的所要的檔案大小(用整數表示)。如果沒有指定,dbcc shrinkfile 將檔案大小減少到預設檔案大小。兩個dbcc都可以帶參數notruncate或truncateonly,具體意思查看線上說明.
方法二:
第一步:
先備份整個資料庫以備不測 。
第二步:
備份結束後,在Query Analyzer中執行如下的語句:
exec sp_detach_db yourDBName,true
#--卸除這個DB在MSSQL中的註冊資訊
第三步:
到日誌的實體檔案所在的目錄中去刪除該日誌檔案或將該日誌檔案移出該目錄
第四步:
在Query Analyzer中執行如下的語句:
exec sp_attach_single_file_db yourDBName,'
d:\mssql\data\yourDBName_data.mdf '
--以單一檔案的方式註冊該DB,如果成功則MSSQL將自動為這個DB產生一個500K的日誌檔案。
方法三:
1. 進入企業管理器,選取資料庫,例如demo
2. 所有任務->分離資料庫
3. 到資料庫檔案的存放目錄,將MuOnline_log.LDF檔案刪除,以防萬一,你可以拷問
4. 企業管理器->附加資料庫,選muonline,這時候你會看見日誌檔案這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否建立一個新的,確定就是了。
5. 記得資料庫重新附加後使用者要重新設定一下。
如果以後,不要它變大:
SQL2000下使用:
在資料庫上點右鍵->屬性->選項->故障復原-模型-選擇-簡單模型。
或用SQL語句:
alter database 資料庫名稱 set recovery simple
--1.日常要做資料庫壓縮
--壓縮日誌及資料庫檔案大小
/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
--*/
1.清空日誌
DUMP TRANSACTION 函式庫名 WITH NO_LOG
2.截斷交易日誌:
BACKUP LOG 資料庫名稱 WITH NO_LOG
3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減少
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案
--選擇日誌檔--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇資料檔--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
也可以用SQL語句來完成
--收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定資料文件,1是文件號,可以透過這個語句查詢到:select * from sysfiles
DBCC SHRINKFILE(1)
4.為了最大化的縮小日誌檔案(如果是sql 7.0,這步驟只能在查詢分析器中進行)
a.分離資料庫:
企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除LOG檔案
c.附加資料庫:
企業管理器--伺服器--資料庫--右鍵--附加資料庫
此法將產生新的LOG,大小只有500多K
或用程式碼:
下面的範例分開 pubs,然後將 pubs 中的一個檔案附加到目前伺服器。
a.分離
EXEC sp_detach_db @dbname = 'pubs'
b.刪除日誌檔
c.再附加
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
5.為了以後能自動收縮,做如下設定:
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--SQL語句設定方式:
EXEC sp_dboption '資料庫名稱', 'autoshrink', 'TRUE'
6.如果想以後不讓它日誌成長得太大
企業管理器--伺服器--右鍵資料庫--屬性--交易日誌
--將檔案成長限制為xM(x是你允許的最大資料檔案大小)
--SQL語句的設定方式:
alter database 資料庫名稱 modify file(name=邏輯檔名,maxsize=20)
以上是資料庫日誌檔案壓縮的方法及步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!