解决方案 »

  1.   

    SQL2005:
    Backup Log DNName with no_log  '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了。
    go
    dump transaction DNName with no_log 
    go
    USE DNName
    DBCC SHRINKFILE (2)
    GoSQL2008:
    USE [master]
    GO
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式
    GO
    USE 数据库名
    GO
    DBCC SHRINKFILE (N'数据库名_Log' , 5, TRUNCATEONLY)   -->参数二(5)就是压缩到指定大小
    GO
    USE [master]
    GO
    ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
    GO
    ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为完全模式
    GO--收缩数据库
    DBCC shrinkdatabase(数据库名)
    GO
      

  2.   

    删LDF这种方法真暴力做完整备份+日志备份,基本上都没问题,
      

  3.   

    日志过大,又无用,收缩时间过长,考虑直接舍弃如果必须在mdf和ldf之间分一个重要性,无疑ldf更重要。另外,同等大小的ldf和mdf收缩,据我经验,ldf通常比mdf快的多,甚至可以秒杀。
      

  4.   

    删除ldf必须承担2个风险:1、数据库损坏,要大量工作修复,甚至修复不了。从此
    2、数据丢失,非完整模式下,日志不做备份操作,数据都留在ldf中,mdf里面是没有的。
      

  5.   

    太多案例都是这样,日志模式为FULL,又不调度备份。。只怪没熟悉DB的人跟进
    在很多单位,没人意识到数据库还需要懂DB的“专业点”维护管理,出事儿后才当灾难应对
    总是有勇敢的单位有勇气面对数据灾难若不需要日志备份,日志模式设为SIMPLE喽,再收缩一次
    不要单独挂载主数据,有可能损坏。。到时就折腾吧
      

  6.   


    sp_detach_db 
    sp_attach_single_file_db