如何修复SQLSERVER 数据库"置疑"之(二)[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 leimin 的 blog

   用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。

     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。

本文关键:SQLSERVER,SUSPECT,LOG FULL
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top