清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG    再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

解决方案 »

  1.   


    1.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样
    UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:
       ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
    2.如果你的恢复模式是全部,你一定要配置日志字段收缩:
        sp_dboption 'databasename','trunc. log on chkpt.',true
        sp_dboption 'databasename','autoshrink',true
    3.通过每日备份将日志收缩:
       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) 这时日志并没有收缩!4.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.
    USE DATABASE_NAME
    go
    DBCC  SHRINKFILE(2,truncateonly)  **检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!5.手动快速收缩日志:
      / *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