精华内容
下载资源
问答
  • 因为单位用的数据库名为svw,如果其他单位或个人想快捷方便无误的压缩数据库日志,就把数据库名更改为你们自己的数据库名,压缩数据库日志的操作步骤:   1、打开企业管理器 2、打开要处理的数据库 3、点击...
    我无论看什么样的书籍总想和自己的工作挂上钩,在繁密的文字中来查找自己所要的信息,在自己工作中所遇到的一些难题总想在其他资料中找到相关的文字,所以我们懂得的越少就要看越多的书籍,谁也不知道什么时候能用得上,单位的数据库越来越庞大,查询速度越来越慢,我结合单位数据库的真实情况来操作如何压缩数据库日志及其数据库文件,这些内容虽然大家都熟悉,如果静下心来再看一遍我自己的这篇文章,就能感觉到他的实践性和针对性是多么的强,直接按这些步骤去执行就可以了,不要问关于这方面的知识点是什么。 
    

        因为单位用的数据库名为svw,如果其他单位或个人想快捷方便无误的压缩数据库日志,就把数据库名更改为你们自己的数据库名,压缩数据库日志的操作步骤:

     

    1、打开企业管理器
    2、打开要处理的数据库
    3、点击菜单>工具>SQL查询分析器
    4、在输入窗口里面输入:
    DUMP TRANSACTION [数据库名] WITH NO_LOG
    BACKUP LOG [数据库名] WITH NO_LOG
    DBCC SHRINKDATABASE([数据库名])
    点击执行!这样子数据库就操作成功了。

     

    上面操作我一直在用,不会出现任何问题,而我这些天想找能够直接压缩数据库文件的方法都不大理想,下面我刚采用了如下方式进行数据库日志及其数据库文件压缩操作,日志压缩的比较理想,数据库文件也有效果,可是不能直接填写你想压缩数据库文件的数字,无论怎么样,还是写出来与大家分享。

     


       下面的所有库名都指你要处理的数据库的库名。

      1.清空日志

      DUMP TRANSACTION 库名 WITH NO_LOG

      2.截断事务日志:

      BACKUP LOG 库名 WITH NO_LOG

      3.收缩数据库文件(RU 不压缩,数据库的文件不会减小 )

     

      企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件-数据库文件 :

      --选择日志文件--收缩操作-收缩文件至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

      --选择数据文件--收缩操作-收缩文件至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

     

        看起来好像操作复杂,其实实际应用中很简单,这样数据库文件就能压缩了,我的数据库文件压缩前是3.92G,压缩后为3.66G,而在收缩操作里不能随意填写你想压缩的数字,后面告诉你最小压缩数字,不能填写比压缩数字在小的数字了。

    展开全文
  • 在程序中压缩sql server2000的数据库备份文件的代码
  • 个人数据库压缩文件

    2012-02-08 11:28:55
    个人数据库压缩文件信息 请大家不要下载免得浪费积分
  • 主要介绍了Android编程实现将压缩数据库文件拷贝到安装目录的方法,涉及Android处理压缩文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Sqlserver2000深度压缩数据库文件.docx
  • SQL Server 2008压缩数据库日志文件

    千次阅读 2014-08-22 16:59:28
     1、ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE --简单模式 2、数据库--任务--收缩--选择日志文件 ...压缩(清除)数据库日记文件: SQL2008清空删除日志: 一、查看日志信息 DBCC log...

    

    1、ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE   --简单模式

    2、数据库--任务--收缩--选择日志文件
    3、ALTER DATABASE 数据库名称 SET RECOVERY FULL  --还原为完全模式

    转:

    压缩(清除)数据库日记文件:

      SQL2008清空删除日志:

       一、查看日志信息

             DBCC loginfo('MyDBName');

             status=0的日志,代表已经备份到磁盘的日志文件。

             status=2的日志,代表还没有备份。

             当收缩日志文件时,收缩掉的空间其实就是 status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。

      二、清除status=2的记录

             sp_removedbreplication 'MyDBName';

     三、对数据库日志文件进行收缩

           在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

      USE [master]

      Go

      ALTER DATABASE MyDBName SET RECOVERY SIMPLE WITH NO_WAIT

      GO

      ALTER DATABASE MyDBName SET RECOVERY SIMPLE --简单模式

      GO 

     

      USE MyDBName

      GO

      DBCC SHRINKFILE(N'MyDBName_log' , 11, TRUNCATEONLY)

      GO

     

      USE [master]

      GO

      ALTER DATABASE MyDBName SET RECOVERY FULL WITH NO_WAIT

      GO

      ALTER DATABASE MyDBName SET RECOVERY FULL --还原为完全模式

      GO

     

    说明:

     1、如果执行上面语句时报“在 sys.database_files 中找不到数据库 'master' 的文件 'MyDBName_log'。该文件不存在或者已被删除。”的错误,原因是数据库的逻辑文件名和物理文件名不一致所造成的。

     2、查询数据库逻辑文件名

          SELECT file_id,name from sys.master_files WHERE database_id=db_id('wac_mall');

          SELECT file_id, name FROM sys.database_files;

          如果数据库通过备份文件还原并重新命名后,数据库的逻辑文件名和数据库名(物理文件名)不一致。

          修改数据库逻辑文件名:

      alter database MyDBName modify file(name=MyDBName_old, newname=MyDBName); 

      alter database MyDBName modify file(name=MyDBName_old_log, newname=MyDBName_log);

     

    四、查询数据库服务器各数据库日志文件的大小及利用率

           DBCC SQLPERF(LOGSPACE);

    五、查询当前数据库的磁盘使用情况

           Exec MyDBName.dbo.sp_spaceused;

    六、查询数据库的数据文件及日志文件的相关信息

           select * from MyDBName.[dbo].[sysfiles];

    七、查询各个物理磁盘分区的剩余空间

           Exec master.dbo.xp_fixeddrives;  

     

     SQL SERVER2005清空删除日志:

      Backup Log MyDBName with no_log
      go
      dump transaction MyDBName with no_log
      go
      USE MyDBName
      DBCC SHRINKFILE (2)
      go

     

    SQL SERVER2000压缩日志:

     DUMP TRANSACTION MyDBName WITH NO_LOG
     BACKUP LOG MyDBName WITH NO_LOG
     DBCC SHRINKDATABASE(MyDBName)

    

    展开全文
  • 通过SQL语句,压缩SQL数据库的日志文件,最小可以将日志文件压缩到1k左右
  • 压缩数据库日志文件(存储过程)

    千次阅读 2007-05-19 16:48:00
    最近数据库日志文件增加太快,其中一个数据库的日志文件在短短一个星期居然从600多MB增加到40多G,为了偷懒所以写了这个存储过程压缩日志文件,不然30多个数据库每天光点收缩就要10几分钟,想想还是很值得的。数据库...

    最近数据库日志文件增加太快,其中一个数据库的日志文件在短短一个星期居然从600多MB增加到40多G,为了偷懒所以写了这个存储过程压缩日志文件,不然30多个数据库每天光点收缩就要10几分钟,想想还是很值得的。

    数据库有个选项叫自动收缩,说的很好听,可是我们的数据库恢复模式都是完整,在完整模式下数据库的收缩并不会释放太多的空间,而且我也不知道自动收缩是什么时候收缩,baidu和google上也没人给个准确说明,所以就自己写了,这也是种学习的方法。

    本存储过程只压缩日志文件,用 SQL Server Agent 执行,自动压缩所有数据库,当然为了有时候临时执行一下所以加了个参数,绝对偷懒的方法!以后也不用去担心日志文件占用太多的磁盘空间了。 其实这个存储过程就执行了几句代码,写的这么麻烦是因为让他自动执行后需要看看执行的情况,如果不打印那些信息根本用不了那么麻烦,虽然候麻烦一次却可以轻松很久,这就是本人做事的原则。

    本来5月份写了一个,让它每个星期自动执行1次,结果现在几个数据库的日志文件都压缩到了不能再缩小,虽然占用的空间是减少了很多可是总感觉这样不是很好,当时写的时候很多东西都不是很了解,经过半个月的时间自己的理解又深了一步,所以重写了一个。因为日志文件如果太小在使用的时候会让它花比较多的效能去增大,而如果太大了则会浪费掉磁盘空间,那么日志文件多大比较适合呢,我个人觉得应该根据每段时间增长的数据量和硬件的配置来考虑。

    这是我在网上搜索到的一部分,主要从这几个方面考虑的:

    1、每段时间的业务量所产生的数据量,比如一天
    2、系统对性能的要求
    3、系统(客户)对数据丢失的承受能力(不能丢任何数据,可以接受一个小时...)
    4、对恢复的时间要求
    5、储存设备的吞吐能力
    6、实际存在可以用来archive 的设备

    总的来说都是需要根据各自的实际需求和具体的使用情况来决定,我现在的日志文件大小是根据数据库的mdf文件大小来决定,保留日志文件的大小为mdf文件的1/10。存储过程如下,已经测试过了,还是很好用的,建议放在master数据库下,如果以后发现问题会随时修改的。在压缩前没有截断事务日志是因为没有必要,每天备份的时候都截断过,而且我这里改变了数据库的恢复模式,也不需要截断了。

    USE  master
    GO
    SET  ANSI_NULLS  ON
    GO
    SET  QUOTED_IDENTIFIER  ON
    GO
    -- 建立人:    高升
    --
    建立日期:2007/05/18
    --
    修改日期:2007/06/02
    --
    功能目的:收缩数据库的日志文件
    --
    参数:    要执行收缩的数据库名称,如果参数为'',则收缩所有的非系统数据库,这个参数是为了应付临时--情况的,根据特殊情况临时针对某个数据库执行可以写上这个数据库的名称
    --
    注意:    修改了恢复模式,注意备份    
    --
    流程说明:1.转到需要收缩的数据库
    --
                2.更改数据库恢复模式为简单
    --
                3.指定收缩大小
    --
                4.更改数据库恢复模式为完整
    CREATE   PROCEDURE   [ dbo ] . [ DB_Shrink_Log ]
      
    @dbName   varchar ( 50 )                 -- 要执行收缩的数据库名称
    AS
    DECLARE   @exec_shrink   varchar ( 500 )     -- 存储所有的执行语句
    DECLARE   @sno   int                      -- 执行的数据库临时编号
    DECLARE   @old_size   decimal ( 18 , 2 )         -- 收缩前ldf文件大小
    DECLARE   @new_size   decimal ( 18 , 2 )         -- 收缩后ldf文件大小
    DECLARE   @mdf_size   decimal ( 18 , 2 )         -- 数据库mdf文件的大小
    DECLARE   @shrink_DB   table (             -- 存储待执行的数据库名称
                sno  int   identity ( 1 , 1 ),name sysname)

    BEGIN  try

    if  ( @DBName   =   '' )     -- 记录需要收缩的数据库名称
       INSERT   @shrink_DB   SELECT  name  FROM  sys.databases  WHERE  database_id  >   4
    else
      
    INSERT   @shrink_DB   SELECT  name  FROM  sys.databases  WHERE  name  =   @DBName

    -- 开始循环收缩数据库Log文件
    SET   @sno   =   1
    while ( @sno   <=  ( SELECT   COUNT (sno)  FROM   @shrink_DB ))
    BEGIN  
      
    SELECT   @dbName   =  name  FROM   @shrink_DB   WHERE  sno  =   @sno

      
    -- 取出数据库mdf和ldf文件的大小
       SELECT   @mdf_size   =  size  *   8   /   1024   FROM  sys.master_files  WHERE  database_id  =   DB_ID ( @DBName and   file_id   =   1
      
    SELECT   @old_size   =  size  *   8   /   1024   FROM  sys.master_files  WHERE  database_id  =   DB_ID ( @DBName and   file_id   =   2

    -- 如果数据库的ldg文件大于mdf/10文件则收缩,否则不需要收缩
    if  ( @old_size   >   @mdf_size / 10
    BEGIN
      
    -- 1.将数据库上下文更改为需要收缩的数据库
       SET   @exec_shrink   =   ' USE  '   +   @dbName   +   ' ; '   +   char ( 13 )

      
    -- 2.将恢复模式改为'简单'
       set   @exec_shrink   =   @exec_shrink   +
        
    ' ALTER DATABASE  '   +   @dbName   +
        
    '  SET RECOVERY SIMPLE; '   +   char ( 13 )

      
    -- 3.取当前数据库所有的ldf文件,文件将压缩到数据库mdf文件大小的1/10
       DECLARE   @shrink   varchar ( 200 )
      
    SET   @shrink   =   ''
      
    SELECT   @shrink   =   @shrink   +   ' DBCC SHRINKFILE( ' + rtrim ( file_id ) + ' , ' + rtrim ( Ceiling ( @mdf_size / 10 )) + ' ); '   + char ( 13 FROM  sys.database_files  WHERE  type  =   1
      
    set   @exec_shrink   =   @exec_shrink   +   @shrink

      
    -- 如果数据库只有一个ldf文件则可以写简单点,ldf文件的file_id通常为2
       -- SET @exec_shrink = @exec_shrink + 'DBCC SHRINKFILE(2,' + rtrim(Ceiling(@mdf_size/10)) + ');'+ char(13)

      
    -- 4.将恢复模式改为'完整'
       set   @exec_shrink   =   @exec_shrink   +
        
    ' ALTER DATABASE  '   +   @dbName   +
        
    '  SET RECOVERY FULL; '

      
    exec  ( @exec_shrink )
      
    -- print @exec_shrink

      
    SELECT   @new_size   =  size  *   8   /   1024   FROM  sys.master_files  WHERE  database_id  =   DB_ID ( @DBName and   file_id   =   2
      
    print  ( @dbName   + ' 收缩完成,压缩前  '   + rtrim ( @old_size +   '  MB,收缩后  ' +   rtrim ( @new_size +   '  MB ' )
    END
    else
    BEGIN
      
    print ( @dbName   +   ' 暂时不需要收缩。 ' )
    END

    SET   @sno   =   @sno   +   1
    END      -- while
    END  try
    BEGIN  catch
      
    print  ERROR_MESSAGE()
    END  catch
    GO
    SET  ANSI_NULLS  OFF
    GO
    SET  QUOTED_IDENTIFIER  OFF
    GO

     

    严重声明:由于切换了恢复模式,所以在压缩完成后如果先备份事务日志会报错,必须先完整或者差异备份一次才能备份事务日志,切记切记!!! 

    最后如果有人不小心看完了请给点建议,谢谢了!

    展开全文
  • 对日外包 DOS命令 写的VBSCRIPT 与批处理文件 用于数据库压缩,可以参考其中的命令
  • 怎样压缩数据库的日志文件

    千次阅读 2004-07-18 03:28:00
    --压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库.--*/ 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG ...

    --压缩日志及数据库文件大小

    /*--特别注意
     请按步骤进行,未进行前面的步骤,请不要做后面的步骤
     否则可能损坏你的数据库.
    --*/

    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.分离
     EXEC sp_detach_db @dbname = 'pubs'

     b.删除日志文件
     
     c.再附加
     EXEC sp_attach_single_file_db @dbname = 'pubs',
        @physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'

    5.为了以后能自动收缩,做如下设置:
     企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
     
     --SQL语句设置方式:
     EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE' 

    6.如果想以后不让它日志增长得太大
     企业管理器--服务器--右键数据库--属性--事务日志
      --将文件增长限制为xM(x是你允许的最大数据文件大小)

     --SQL语句的设置方式:
     alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

    (来源:http://community.csdn.net/Expert/topic/3039/3039451.xml?temp=.852627

    展开全文
  • 压缩数据库

    2015-01-05 11:19:07
     1.显示由整个数据库保留和使用...2.显示数据库文件列表  SELECT * FROM SYSFILES 3.设置数据库恢复模式为简单  ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT  GO  ALTER DATABASE DNName S
  • 数据库是完整的timit数据库,一共包含6300个句子,由来自美国八个主要方言地区的630个人每人说出给定的10个句子,由于文件过大,我使用winrar将数据分成了3个部分,本文件压缩文件中的一部分,需要下载所有的三...
  • SQLServer数据库文件压缩

    千次阅读 2019-05-06 13:48:34
    1.数据库文件压缩 点击数据库表右键-->任务-->收缩-->数据库 2.数据库日志文件压缩 --设置为简单模式 ALTER DATABASE 数据库名SET RECOVERY SIMPLE; GO -- 将日志文件压缩到1 MB. 数据库日志...
  • 用的时间越久,数据库及日志越来越大,安全有效的压缩数据库,是十分必要的
  • 数据库备份文件自动压缩脚本

    千次阅读 2012-06-29 14:07:34
    给大家分享一个数据库备份文件自动压缩脚本,相信大家会遇到这种情况,SQL的备份文件越来越大,而且每天都要备份,磁盘空间完全不够用,每天手动删除又太麻烦,如果服务器数量少还好说,如果服务器数量很多,几十台...
  • 压缩数据库日志

    千次阅读 2004-03-08 11:30:00
    经常在CSDN上看到网友发帖说,压缩日志文件处理不当,导致数据库损坏,甚至不能恢复数据,于是就写了一个通用的数据库日志文件压缩的存储过程来解决此问题:/*--压缩数据库的通用存储过程 压缩日志及数据库文件大小 ...
  • SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库文件.必须将此文件压缩还原数据库的时候出现这样的问题,应该怎么解决呢? 其实该问题解决非常简单,只需1右键点击数据库所在的文件夹,2点击属性,...
  • --压缩日志及数据库文件大小/*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库.--*/1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG ...
  • 在编程中我们常常会遇到“将文件保存到数据库中”这样一个问题,虽然这已不是什么高难度的问题,但对于一些刚刚开始编程的朋友来说可能是有一点困难。其实,方法非常的简单,只是可能由于这些朋友刚刚开始编程不久,...
  • 压缩数据库及日志

    千次阅读 2016-11-09 13:49:11
    压缩数据库及日志
  • SharePoint 压缩数据库日志容量

    千次阅读 2015-08-31 16:52:33
    SharePoint 压缩数据库日志容量 数据库日志超过了几个G 迁移备份都带来了 巨大的困难。Ok 压缩一下。 WSS_content 数据库压缩前 首先选择WSS_content 数据库--属性--选项--选择简单 任务-...
  • 数据库是完整的timit数据库,一共包含6300个句子,由来自美国八个主要方言地区的630个人每人说出给定的10个句子,由于文件过大,我使用winrar将数据分成了3个部分,本文件压缩文件中的一部分,需要下载所有的三...
  • 压缩access数据库

    千次阅读 2017-11-21 15:46:48
    遇到一个问题,使用的是accesss数据库,在加载数据库中的信息的时候,速度特别慢,有时候一次查询最终会卡15秒左右,然后才能得到结果,跟踪发现卡的地方在SQLExecDirect中,已经是odbc api了。打开数据库看也没发现...
  • 一步步教你怎样压缩数据库 以及数据库的日志 希望对你有帮助
  • 用PHP压缩的RW-DB 使您能够从压缩文件中导入和导出数据库。.备份数据库的好方法...
  • MySQL如何压缩数据库

    千次阅读 2008-07-25 22:45:32
    我使用mysql的版本是5.0.18。 建立数据库时,使用的存储引擎是inndb。 当进行频繁添加、更新操作时,数据库文件(只有一个)往往很...想压缩数据库文件,可是没找到办法。 难道MySQL不能压缩数据库文件吗? :?: ...
  • sqlserver如何压缩数据库

    千次阅读 2014-10-23 09:53:11
    在sqlserver中压缩数据库的方法: 1、在数据库查询器执行以下语句:DUMP TRANSACTION [数据库名] WITH NO_LOG 2、数据库名右键->任务->收缩-->数据库-->确定。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 284,287
精华内容 113,714
关键字:

如何压缩数据库中的文件数据库