1、開啟查詢分析器,輸入命令DUMP TRANSACTION 資料庫名 WITH NO_LOG2、開啟企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇記錄檔--在收縮方式裡選擇收縮至: ,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。3、在資料庫上點右鍵->屬性->選項->故障恢複-模型-選擇-簡單模型。4、企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
=====================
1:由小的事務引起日誌溢出,系統能正常啟動。
解決辦法:
擴大資料庫日誌空間:
alter database 資料庫名 on 裝置名稱=數量(M為單位)
sp_logdevice 資料庫名,裝置名稱
清除日誌
dump transaction 資料庫名 with no_log(no_truncate)
2:由大的事物引起日誌溢出,系統較長時間內無法正常啟動或資料庫無法恢複
解決辦法:
強行清空日誌。
在實在無法恢複資料庫或有近期備份的情況下,可採用強行清空日誌的方法。採取這種方法的後果有可能徹底破壞資料庫。執行步驟如下:
Ⅰ 以-v 方式啟動SQL SERVER(不檢測日誌)
Ⅱ 修改資料庫狀態為-32768(阻塞狀態)
update sysdatabases set status=-32768 where name=資料庫名
Ⅲ 授權sybase_ts_role許可權(sybase_ts_role為SQL SERVER特殊管理員權限,在日常的資料庫管理中,不需要這個角色)
sp_role “grant”,”sybase_ts_role”,sa
set role “sybase_ts_role”
Ⅳ 清除日誌
dbcc rebuild_log(資料庫名,1,1)
完成以上步驟後,重新啟動SQL SERVER即可。如果資料庫能正常啟動,資料庫就恢複完成;如果無法啟動,只能重新建立資料庫。
=================================================================
壓縮日誌
1:截斷交易記錄:
BACKUP LOG 資料庫名 WITH NO_LOG
2:清空日誌
DUMP TRANSACTION 庫名 WITH NO_LOG
再:
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇記錄檔--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
3: 刪除LOG
1:分離資料庫 企業管理器->伺服器->資料庫->右鍵->分離資料庫
2:刪除LOG檔案
3:附加資料庫 企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法產生新的LOG,大小隻有500多K
再將此資料庫設定自動收縮
或用代碼:
下面的樣本分離 pubs,然後將 pubs 中的一個檔案附加到當前伺服器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
4: 如果想以後不讓它增長
企業管理器--伺服器--右鍵資料庫--屬性--交易記錄--將檔案增長限制為xM(x是你允許的最大資料檔案大小)
--SQL語句的設定方式:
alter database 資料庫名 modify file(name=邏輯檔案名稱,maxsize=20)
5.設定為自動收縮
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"