SQL Server 2000的日志文件压缩 
1. 把SQL Server 的故障模式置为简单模式,以节省log文件所占空间;alter database 'database_name' set recovery simple2. 在“Enterprise Manager”中用菜单操作或者用以下DBCC命令:USE 'database_name'GODBCC SHRINKFILE(select File_id('database_name_log'), 1)* 1表示1M, 'database_name_log'表示日志文件的逻辑文件名3. Backup日志,并在Backup后Truncate日志文件;
---收缩日志
backup log dbname with no_log
dbcc shrinkdatabase('dbname',truncateonly)在执行以上操作前,请备份你的数据库

解决方案 »

  1.   

    最好的抑制日志文件不断增长的方法是:一个完备的数据库备份计划。
        日志的作用是记录针对数据库的所有事务,而其中事务包括活动部分和非活动部分。事务日志的活动部分包含仍在运行但尚未完成的事务。为了记录这些事务,DBMS自然会寻找空间存储这些信息。
        那就是两种方式:
        1、重新使用事务日志中截断的非活动空间;
        2、占用另外的新的磁盘空间。
        我们又知道,每次的事务日志备份都会自动截断事务日志中的不活动部分。如果结合完善的备份计划。日志文件自然不会不停地膨胀。
        SQL server操作很人性化,用维护计划向导可以很方便的建立备份计划。比如**网站论坛可以每天晚上10点完全备份一次,保留7天内的,每3个小时一次事务日志备份,保留2天的。其余的数据库每周完全备份一次。周日晚将硬盘的所有备份刻录到光盘同时删除硬盘备份。这样可以缓解硬盘空间紧张问题,同时保证了数据库的安全。
      

  2.   

    上面那位说得方法已经在我这不顶用了,数据库在sql已经是置疑了,并且右键的功能操作是灰色的,收缩都不能点!你指的截断数据库具体怎么做???谢谢说详细些!!!
      

  3.   

    当数据库的主数据MDF文件完好无损时,在丢失了LDF文件的情况下,如何利用MDF文件恢复数据库?我们把SQL Server的日志文件分为两类:一类是无活动事务的日志,另一类是含活动事务的日志,根据不同的日志,采取不同的方法来恢复数据库。  1. 无活动事务的日志恢复  无活动事务的日志丢失时,我们很容易利用MDF文件直接恢复数据库,具体方法如下:  ①分离被质疑的数据库,可用企业管理器中的"分离数据库工具",或者用存储过程sp_detach_db分离数据库;  ②利用MDF文件附加数据库生成新的日志文件,可用企业管理器中的"附加数据库"的工具,或者用存储过程sp_attach_single_file_db附加数据库。  如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库。  2. 含活动事务的日志恢复  含有活动事务的日志丢失时,利用上述方法就会出现"数据库和日志文件不符合,不能附加数据库"。对于这种情况下,我们采用如下方法:  ①新建同名数据库AAA,并设它为紧急模式  ·停止SQL Server服务器;  ·把数据库主数据MDF文件移走;  ·启SQL Server服务器,新建一个同名的数据库AAA;   ·停止SQL Server服务器,把移走的MDF文件再覆盖回来;  ·启动SQL Server服务器,把AAA设为紧急模式,不过默认情况下,系统表是不能随便修改的,必须首先设置一下使其能被修改,运行以下语句即可:
    Use MasterGosp_configure ’allow updates’,1reconfigure with overrideGo  接着运行以下语句,把AAA数据库设为紧急模式,即把Sysdatabases表中AAA数据库的status属性设为’37268’,就表示把AAA数据库处于紧急模式。
    update sysdatabases set status=32768 where hame=’AAA’  如果没有报告什么错误,就可以进行以下操作。  ②设置数据库AAA为单用户模式,并检查数据库  ·重启SQL Server服务器;  ·把数据库AAA设为单用户模式
    Sp_dboption ’AAA’, ’single user’, ’true’  ·运行以下语句,检查数据库AAA
    DBCC CHECKDB(’AAA’)  如果没有什么大的问题就可以把数据库的状态改回去。  ③还原数据库的状态  运行以下语句,就可以把数据库的状态还原:
    update sysdatabases set status=28 where name=’AAA’sp_configure ’allow updates’,0reconfigure with overrideGo  如果没有什么大的问题,刷新一下数据库,数据库AAA又会出现在你面前,但目前恢复工作还没有做完,此时的数据库仍不能工作,还要进行下面的处理,才能真正恢复。
      

  4.   

    写得比较多,简单点:
          
        1.新建一个同名的数据库  2.再停掉sql server(注意不要分离数据库)  3.用原数据库的数据文件覆盖掉这个新建的数据库  4.再重启sql server  5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)  6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用  数据库的脚本创建一个新的数据库,并将数据导进去就行了.  USE MASTER  GO  SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE  GO  UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'  Go  sp_dboption '置疑的数据库名', 'single user', 'true'  Go  DBCC CHECKDB('置疑的数据库名')  Go  update sysdatabases set status =28 where name='置疑的数据库名'  Go  sp_configure 'allow updates', 0 reconfigure with override  Go  sp_dboption '置疑的数据库名', 'single user', 'false'  Go注意:如果你之前没有将数据库的数据文件备份,请在停止SQL服务后,将数据库的数据文件复制到其他位置,然后进行以上操作
      

  5.   

    假设你的数据库名称为 db
    dbcc shrinkfile('db_data')
    dbcc shrinkfile('db_log')
    压缩一下就可以了