描述:
由于原来建立数据库的时候,设置的LOG大小过大,导致现在硬盘空间不够用
解决方法:
本人是这样想的,步骤如下:
首先备份数据库---然后删除现有数据库---删除LOG文件---重新建立一个新的数据库并设置LOG大小---(关键问题所在)关键问题所在:
如果能把原来的备份文件BAK文件里的表和数据都转到现在新建的数据库中,有什么方法吗
谢谢各位,如果可以解决继续加分。

解决方案 »

  1.   

    http://blog.csdn.net/dba_huangzj/article/details/7982945太巧了。我晚上在翻译了一片文章,你看看
      

  2.   

    如果你真要删除log文件,那一定要先完全备份。
      

  3.   

    完全备份?直接BACKUP不就可以吗?
    现在BACKUP过了,但是还有一个上面的问题。
      

  4.   

    我的情况有点不同,我的情况是当初设置的时候,设置的LOG初始值太大了,导致了现在的情况
    上面我写的步骤,是我想到的解决办法,但是最后有个问题,不知道该怎么解决了。
    希望能得到各位帮助。
      

  5.   

    backup要看你语句,完整、差异、日志备份都是使用backup命令的,要看关键字。
    按照你的问题,你可以这样,执行Checkpoint命令(在SSMS中执行),然后做一次日志备份,这样日志文件中的已提交事务就会写入到物理文件中,这样你可以分离数据库,把ldf删掉,在附加,附加的时候让SQLServer自动产生ldf文件就可以了,你如果用bak文件还原,配置还是一样的。那个只是作为后备,一旦出问题,还有的补救
      

  6.   

    不好意思,你说的我不是很懂。如果按照我上面说的做,现在有一个备份文件BAK,然后有一个新建的数据库,能把BAK中的数据导入到新建的数据库中吗?
    新建的数据库的大小和LOG的大小是重新设置的。
      

  7.   

    不能,因为bak文件存有了原数据库的配置信息,无论你新数据库设置得多小,一还原还是和原有的一模一样。我简单说一下我的方案吧:
    1、在SSMS中运行checkpoint。
    2、做一次日志备份,其实这个备份没啥用,可以不保留,但是只有做日志备份日志才能截断。截断是为了把日志中的数据写入到物理文件保存。
    3、完全备份数据库一次。
    4、把数据库分离。然后删除ldf文件
    5、把数据库附件,ldf文件让其自动生成即可。
      

  8.   


    说的对,无论你新数据库设置得多小,一还原还是和原有的一模一样。#7楼的方案的可行的,不过麻烦了一点。如果只是减少日志文件的大小,只需:1、完全备份数据库
    2、将数据库恢复模式改为“简单”
    3、收缩数据库日志
    4、将数据库恢复模式改回“完整”
    5、完全备份数据库其实2、3、4步就可以了,但作为一个DBA,必须保证数据库的安全和日志链的连续性,才加了步骤1、5
      

  9.   


    1、完全备份数据库
    2、将数据库恢复模式改为“简单”
    3、收缩数据库日志
    4、将数据库恢复模式改回“完整”
    5、完全备份数据库其实2、3、4步就可以了,但作为一个DBA,必须保证数据库的安全和日志链的连续性,才加了步骤1、5你好
    能给出第三步的详细做法吗,谢谢你了。
      

  10.   

    收缩日志USE [AdventureWorks]
    GO
    DBCC SHRINKFILE (N'AdventureWorks_Log' , 0)
    GO