提問者:云客網官方問答 | 分類:數據庫營銷 | 瀏覽263次 | 懸賞分:0積分 2017-03-09 06:00:17
煩死啦
我要回答
蝴***~
釋放磁盤空間并且重新運行恢復操作,按照下面的步驟收縮日志。 sp_resetstatus 關閉數據庫的置疑標志,但是原封不動地保持數據庫的其它選項。 為從根本上解決這樣的問題,你可以按下面的操作配置SQLSERVER 2000: a.如果不需要恢復到指定的時間點,你可以將數據庫的恢復模式配置為簡單,這樣 UPDATE,DELETE,SELECT就不會記錄日志,日志就不會增加的很大: USE MASTER GO ALTER DATABASE DB_NAME SET RECOVERY SIMPLE b.如果你的恢復模式是全部,你一定要配置日志字段收縮: USE MASTER GO sp_dboption 'databasename','trunc. log on chkpt.',true sp_dboption 'databasename','autoshrink',true c.通過每日備份將日志收縮: BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES BACKUP LOG DATABASE_NAME TO LOG_DEVICES OR BACKUP LOG DATABASE_NAME with truncate_only **檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志并沒有收縮! d.每天在備份數據庫完成之后,重新啟動MS SQLSERVER SERVICE. USE DATABASE_NAME go DBCC SHRINKFILE(2,truncateonly) **檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志已經收縮! e.手動快速收縮日志: / *run below script,you will shrink you database log files immediately, in my experience,you need to run the script for 3 or 4 minutes before stopping it manually */ use databasename dbcc shrinkfile(2,notruncate) dbcc shrinkfile(2,truncateonly) create table t1(char1 char(4000)) go declare @i int select @i=0 while(1=1) begin while(@i<100) begin INSERT INTO T1 VALUES ('A') SELECT @I=@I+1 END TRUNCATE table T1 BACKUP LOG youdatabasename with truncate_only end GO 注意 只有在您的主要支持提供者指導下或有疑難解答建議的做法時,才可以使用 sp_resetstatus。否則,可能會損壞數據庫。 由于該過程修改了系統表,系統管理員必須在運行 sp_resetstatus這個過程前,啟用系統表更新。要 啟 用更新,使用下面的過程: USE master GO sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE GO 過程創建后,立即禁用系統表更新: sp_configure 'allow updates', 0 GO RECONFIGURE WITH OVERRIDE GO 只有系統管理員才能執行 sp_resetstatus。執行該過程后,立即關閉 SQL Server。