如何解决无法打开数据库,恢复操作已将数据标记为suspect。
阅读(261)
2017-03-09 06:00:17
烦死啦
提问者:云客网官方问答
悬赏分:0分
评论
-
蝴***~
2017-03-09
释放磁盘空间并且重新运行恢复操作,按照下面的步骤收缩日志。 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。赞0