如题。。

解决方案 »

  1.   

    USE DBNAME;
    GO
    -- Truncate the log by changing the database recovery model to SIMPLE.
    ALTER DATABASE DBNAME
    SET RECOVERY SIMPLE;
    GO
    -- Shrink the truncated log file to 1 MB.
    DBCC SHRINKFILE ([DBNAME_log], 10);
    GO
    -- Reset the database recovery model.
    ALTER DATABASE DBNAME
    SET RECOVERY FULL;
    GO
      

  2.   

    不行 
    提示无法打开物理文件 数据库名_log.ldf
      

  3.   

    新建一txt,把txt改成ldf,然后把名字改成对应的数据库文件,再试试
      

  4.   


    附加的时候新建一个ldf文件
      

  5.   

    添加了ldf文件
    还是不行 提示在"c:\数据库名_ldf"中、偏移量为0000000000000000000的位置执行读取期间,操作系统已
    经向SQL SERVER返回了错误38.。。
      

  6.   

    to xiequan2
    提示无法打开物理文件 数据库名_log.ldf
      

  7.   

    使用了一个简单的方法收缩了日志:
    1、BACKUP LOG .... WITH NO_LOG
    2、收缩数据库
    OK,同步重新进行中。answer:
    你查一下数据库的日志模式是不是full?这个模式产生的日志巨大,改成简单模式就可以了,再把数据库设为自动收缩。
      SQL SERVER日志清除的两种方法
      在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法……
      方法一
      一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
      1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库51aspx)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。
      2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。
      3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
    SQLSERVER中讲:
    BACKUP LOG 数据库名 WITH NO_LOG|TRUNCATE_ONLY可以截断事务日志。
    但我在数据库中进行上述操作后,事务日志还是没有改变。第一步只是将非活动的事务日志截断,并没有收缩数据库,只有进行第二项操作后,数据库才进行事务日志的清理工作,将截断的非活动事务删除,并将事务日志文件收缩到适当尺寸。
    在使用 SQL Server 时,数据库里的日志文件会越来越大,需要把它删除。  我先把这个数据库分离,在数据库上点右键 -> 所有任务 -> 分离数据库,分离之后,就可以把 Log 文件删除,同时也可以把数据进行备份。之后,就可以在所有任务里的附加数据库再把那个数据库添进来,SQL Server 会提示 LOG 文件不存在,问你是不是要新建一个,选是就行了,这样,LOG 文件就清空了。这个方法只需几分钟的时间,但在这几分钟里,就不能访问这个数据库了,我觉得只适用于小型的应用,对于大型的系统就要找其它方法了。 
      

  8.   

    1.清空日志
      DUMP TRANSACTION 库名 WITH NO_LOG 
    2.截断事务日志:
      BACKUP LOG 数据库名 WITH NO_LOG
    3.收缩数据库文件(如果不压缩,数据库的文件不会减小
      企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
      --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
      --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
      也可以用SQL语句来完成
      --收缩数据库
      DBCC SHRINKDATABASE(客户资料)
      --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
      DBCC SHRINKFILE(1)
    4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
      a.分离数据库:
      企业管理器--服务器--数据库--右键--分离数据库
      b.在我的电脑中删除LOG文件
      c.附加数据库:
      企业管理器--服务器--数据库--右键--附加数据库
      此法将生成新的LOG,大小只有500多K
      或用代码:
      下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
      a.分离
      E X E C sp_detach_db @dbname = 'pubs'
      b.删除日志文件
      c.再附加
      E X E C sp_attach_single_file_db @dbname = 'pubs',
      @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
    5.为了以后能自动收缩,做如下设置:
      企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
      --SQL语句设置方式:
      E X E C sp_dboption '数据库名', 'autoshrink', 'TRUE'
    6.如果想以后不让它日志增长得太大
      企业管理器--服务器--右键数据库--属性--事务日志
      --将文件增长限制为xM(x是你允许的最大数据文件大小)
      --SQL语句的设置方式:
      alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
    特别注意:
      请按步骤进行,未进行前面的步骤,请不要做后面的步骤
      否则可能损坏你的数据库.
      一般不建议做第4,6两步
      第4步不安全,有可能损坏数据库或丢失数据
      第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.二、另外提供一种更简单的方法,本人屡试不爽,建议大家使用。
    更简单的方法:
    1。右建数据库属性窗口--故障还原模型--设为简单
    2。右建数据库所有任务--收缩数据库
    3。右建数据库属性窗口--故障还原模型--设为大容量日志记录 
      

  9.   

    CREATE DATABASE dbname ON (NAME='logical_name', FILENAME='filename.mdf') FOR ATTACH_REBUILD_LOG
      

  10.   

    你的文件是MDF文件吗?如果不是的话先自己新建一个同名数据库,然后执行:
    RESTORE database test from DISK='c:\test.bak'