网站开通天天学习频道
发新话题
打印

[MsSql] 如何删除、清理、整理SQL SERVER 2000的日志和数据库文件

本主题由 System 于 2008-9-1 05:00 解除限时置顶

如何删除、清理、整理SQL SERVER 2000的日志和数据库文件

最简单的形式:
加一个作业,定时截断和收缩日志。   
  backup   log   dbname   with   no_log   
  DBCC   SHRINKDATABASE   dbname

  清空日志   
  DUMP     TRANSACTION     库名     WITH     NO_LOG     
  截断事务日志   
  BACKUP   LOG   数据库名   WITH   NO_LOG   



use   userdb   
  go     
  dbcc   shrinkfile(filename,大小)   
  go     
  用此语句可将你的日志收缩到你设定的大小




系统一点方法:
--压缩日志及数据库文件大小   
   
  1.清空日志   
  DUMP     TRANSACTION     库名     WITH     NO_LOG           
   
  2.截断事务日志:   
  BACKUP   LOG   数据库名   WITH   NO_LOG   
   
  3.收缩数据库文件(如果不压缩,数据库的文件不会减小   
  企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件   
  --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了   
  --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了   
   
  也可以用SQL语句来完成   
  --收缩数据库   
  DBCC   SHRINKDATABASE(客户资料)   
   
  --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select   *   from   sysfiles   
  DBCC   SHRINKFILE(1)   
   
  4.为了最大化的缩小日志文件   
  a.分离数据库:   
  企业管理器--服务器--数据库--右键--分离数据库   
   
  b.在我的电脑中删除LOG文件   
   
  c.附加数据库:   
  企业管理器--服务器--数据库--右键--附加数据库   
   
  此法将生成新的LOG,大小只有500多K   
   
  或用代码:     
  下面的示例分离   pubs,然后将   pubs   中的一个文件附加到当前服务器。   
   
  a.分离   
  EXEC   sp_detach_db   @dbname   =   'pubs'   
   
  b.删除日志文件   
   
  c.再附加   
  EXEC   sp_attach_single_file_db   @dbname   =   'pubs',     
        @physname   =   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf'   
   
  5.为了以后能自动收缩,做如下设置:   
  企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"   
   
  --SQL语句设置方式:   
  EXEC   sp_dboption   '数据库名',   'autoshrink',   'TRUE'   
   
  6.如果想以后不让它日志增长得太大   
  企业管理器--服务器--右键数据库--属性--事务日志   
  --将文件增长限制为xM(x是你允许的最大数据文件大小)   
   
  --SQL语句的设置方式:   
  alter   database   数据库名   modify   file(name=逻辑文件名,maxsize=20)

TOP

删除(重建)日志方法:   
    刚刚尝试这样的方式行不通,不过这个是CSDN上看到的,一起贴出来。不过还是建议用上面说的在查询分析器中清除日志的方式;
  企业管理器:   
  1、分离数据库   
  右键--所有任务--分离数据库   
  2、删除日志文件   
  删除\Microsoft   SQL   Server\MSSQL\dbname_log.ldf文件   
  3、附加数据库   
  右键--所有任务--附加数据库   
   
  查询分析器   
  1、分离数据库   
  EXEC   sp_detach_db   'dbname'   
  2、删除日志文件   
  删除\Microsoft   SQL   Server\MSSQL\dbname_log.ldf文件   
  3、附加数据库   
  EXEC   sp_attach_single_file_db   @dbname   =   'dbname',     
        @physname   =   '..\Microsoft   SQL   Server\MSSQL\Data\dbname.mdf'   
   
  这样生成的新的日志大小为500k左右。

TOP

1:   删除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'   
   
   
  2:清空日志   
  DUMP     TRANSACTION     库名     WITH     NO_LOG           
   
  再:   
  企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了   
   
  3:   如果想以后不让它增长   
  企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M

TOP

--清除日志   
  方法1、   
  --在查询分析器,选中所要清理日志的数据库,执行如下SQL   
  backup   log   数据库名   with   no_log   
  DBCC   SHRINKFILE   (   日志文件名或日志文件ID,要缩小的目标大小)   
                    
  在当前数据库下   
  select   fileid,groupid,name   from   sysfiles   where   groupid=0   
  ----------------------------------------------------------   
  得到以下结果   
  fileid           groupid                     name      
  2                     0                                 test_log     
   
  以上结果,fileid为日志文件ID,name为test_log   
   
  你可以   
  backup   log   test   with   no_log   
  dbcc   shrinkfile   (2,2)   
  or   
  backup   log   test   with   no_log   
  dbcc   shrinkfile   ('test_log',2)   
  如果以后,不想要它变大,在数据库上点右键->属性->选项->故障恢复     模型   选择   简单模型就可以了!   
  或用SQL语句   
  alter   database   数据库名   set   recovery   simple   
   
  方法2、   
  SQL   SERVER企业管理器-》SQL   SERVER组-》服务器-》数据库-》选中数据库实体-》右键-》所有任务-》分离数据库,   
  然后到数据库所在物理路径下删除.ldf文件,再数据库右键-》所有任务-》附加数据库,即可,会重新生成日志文件。

TOP

发新话题