如果用 DBCC SHRINKFILE 语句会有问题吗

解决方案 »

  1.   

    如果你的数据库需要备份,那么就先备份一下日志。如果你的数据库不需要备份,那么就直接dbcc shrinkfile
      

  2.   

    楼主的方法,不可作为常规操作,日志文件损坏时倒可以一试
    原理:
    #1.分离数据库,如果能正常执行完毕,应该已经没有未完成的事务
    #2.相当于舍去日志文件,只保留数据文件
    #3.重新附加时,由于没有日志文件,系统会自动重建日志文件(1M)
    缺点:
    #1.此操作属离线操作
    #2.假如此数据库用于复制,镜像或日志传送,事务会丢失
    #3.不排除附加时出错的可能性
    建议:
    #1.如果系统不要求日志备份的话,把数据库设置成SIMPLE模式,日志文件会重用
    #2.如果系统要求日志备份的话,把数据库设置成FULL模式,定时作日志备份
    #3.如果遇见日志文件收缩不了的状况,分析下原因,可能是未提交事务,镜像未完成,复制未完成,日志未备份等原因导致。
    具体查看sys.database表中的log_reuse_wait_desc字段
      

  3.   


    把数据库的恢复模式改为simple,然后再收缩日志文件
      

  4.   

    看你需求,如果是正式环境,最好改回full,否则simple也可以