我用SQL SERVER 2000建立的SQL数据库只有50MB大小,但运行一段时间后,数据库日志文件却猛增至40GB,以致使磁盘涨满、软件无法继续运行、出现“数据库日志已满,请释放空间”的提示。在这种情况下,我按网上介绍的方法,使用下列语句将数据库日志文件清零:        DUMP TRANSACTION 数据库名 WITH NO_LOG 
       BACKUP LOG 数据库名 WITH NO_LOG
       DBCC SHRINKDATABASE(数据库名)   同时,还在数据库属性中的“事务日志”项下将文件增长限制为200MB 。   但运行一段时间后,又出现了“数据库日志已满,请释放空间”的提示,这次是由于数据库日志已增至设定限制的最高200MB。软件无法继续运行,只得强行关闭。于是我再次使用下列语句将数据库日志文件清零:        DUMP TRANSACTION 数据库名 WITH NO_LOG 
       BACKUP LOG 数据库名 WITH NO_LOG
       DBCC SHRINKDATABASE(数据库名)   但这次出现了更为严重的问题,当天输入数据库的数据全部丢失!   敬向电脑专家请教:
   1、为什么会出现SQL数据库日志已满的问题?该数据库完全备份文件只有50MB,删除除该数据库然后用备份文件还原数据库后日志文件却有40G多,真是不可思异。
   2、同样一个数据库,为什么安装在大部分的电脑上运行后不出现数据库日志已满的问题,而有的电脑上运行后却出现数据库日志已满的问题?与这台机的什么设置有关?
   3、在解决SQL数据库日志已满的问题中,如何避免数据库刚输入的数据丢失?
   3、如何从根本上解决SQL数据库日志已满的问题?要求每次电脑自动生成的数据库日志文件只保留最近的日志,删除以前已过期的日志,应如何设置?
   敬请指导,不胜感激!
 

解决方案 »

  1.   

    1、你设置了日志文件的最大数,数据库的恢复模式是完整恢复模式,所有的针对数据库的改动都会记录到日志,不仅仅是你的改动数据库,数据库本身的操作也有记录到日志,所以,日志文件才会不断增长。
    2、那是因为大部分的电脑上的数据库,基本没怎么变过,但生产用的数据库经常变动,所以日志记录也变得巨大,我见过数据库200MB,但是日志文件50GB,因为本来数据库有10GB,因为测试需要删除了大部分的数据,结果导致日志文件增长到了50GB。
    3、定时备份日志并收缩日志文件。
    4、通过备份日志,并收缩日志文件,这个语句你自己百度。5、日志是一个以事务编号连续的记录,比如,我第一次备份的日志事务编号为1-1000,那么日志就会被截断,并从1001开始,之后的日志备份就从1001开始了,所以,初始备份一直到最后一次备份都不能删除,否则使用日志恢复时会出现问题。
      

  2.   

    其实我也遇到过1这个问题,对于数据库还原原理还不是太清楚。期待高手1、为什么会出现SQL数据库日志已满的问题?该数据库完全备份文件只有50MB,删除除该数据库然后用备份文件还原数据库后日志文件却有40G多,真是不可思异。
      

  3.   


    还原数据库包括还原数据文件和日志文件,日志文件在你备份时就有40GB,那么用这个备份文件还原数据库,日志文件依然是40GB,备份就相当于数据库在某一时刻的快照一样,记录该时刻数据库的所有状态。
      

  4.   

    1.ALTER DATABASE 数据库名 SET RECOVERY SIMPLE  设置数据库为简单模式
    2.如果是完整模式,设置日志文件大小,自动截断日志
    3.如果是完整模式,定期备份日志
      

  5.   

    将数据库的故障还原模型设置为“简单”模式,是否可以完全避免出现“SQL数据库日志已满”的问题?
      

  6.   

    数据库的完整备份是备份数据库的页面page以及一部分的交易记录,但是如果数据库的恢复模式为FULL或者大容量的话,如果不定期的备份日志,那么所有的操作都会记录到日志中,导致日志非常大。所以解决这个问题一个是增加日志备份,或者不想要日志备份的话修改恢复模式为SIMPLE. 
      

  7.   

       数据库任务中的“收缩数据库”(如收缩数据库的日志文件)起什么作用?将数据库的日志文件设置为定期(如每周一次)收缩,并设置为收缩文件至 0 MB,是否可以避免出现“SQL数据库日志已满”的问题? 
      

  8.   

     数据库任务中的“收缩数据库”(如收缩数据库的日志文件)起什么作用?将数据库的日志文件设置为定期(如每周一次)收缩,并设置为收缩文件至 0 MB,是否可以避免出现“SQL数据库日志已满”的问题?  
      

  9.   

    首先你要保证你的日志有可收缩空间,否则就像上面出现的问题,增长的很大没有空间收缩也是没用的。所以还是要做日志备份或者将恢复模式修改为SIMPLE(这个要看你的恢复策略,修改为SIMPLE后就没有日志备份了。)