❶ 如何解決無法打開資料庫,恢復操作已將數據標記為suspect。
5. 釋放磁碟空間並且重新運行恢復操作,按照下面的步驟收縮日誌。
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。