当前位置:  数据库>sqlserver

sql server 日志文件过大的解决办法

    来源: 互联网  发布时间:2014-08-29

    本文导语:  前几天也碰到sql server日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G! 试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小。无论如何,这应该算SQL SERVER的一个BUG吧...

前几天也碰到sql server日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G!
试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小。无论如何,这应该算SQL SERVER的一个BUG吧。

后来找到下面的代码,就可以将sql server日志文件缩小到自己想要的大小了。
把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(已经用过多次了)
 

代码如下:
    SET NOCOUNT ON  
    DECLARE @LogicalFileName sysname,  
            @MaxMinutes INT,  
            @NewSize INT  
       
    USE     Marias             -- 要操作的数据库名  
    SELECT  @LogicalFileName = 'Marias_log',  -- 日志文件名  
    @MaxMinutes = 10,               -- Limit on time allowed to wrap log.  
            @NewSize = 100                  -- 你想设定的日志文件的大小(M)  
    
    -- Setup / initialize  
    DECLARE @OriginalSize int  
    SELECT @OriginalSize = size  
      FROM sysfiles  
      WHERE name = @LogicalFileName  
    SELECT 'Original Size of ' + db_name() + ' LOG is ' +  
            CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +  
            CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'  
      FROM sysfiles  
      WHERE name = @LogicalFileName  
    CREATE TABLE DummyTrans  
      (DummyColumn char (8000) not null)  
    
    
    DECLARE @Counter   INT,  
            @StartTime DATETIME,  
            @TruncLog  VARCHAR(255)  
    SELECT  @StartTime = GETDATE(),  
            @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'  
    
    DBCC SHRINKFILE (@LogicalFileName, @NewSize)  
    EXEC (@TruncLog)  
    -- Wrap the log if necessary.  
    WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired  
          AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)   
          AND (@OriginalSize * 8 /1024) > @NewSize   
      BEGIN -- Outer loop.  
        SELECT @Counter = 0  
        WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))  
          BEGIN -- update  
            INSERT DummyTrans VALUES ('Fill Log')   
            DELETE DummyTrans  
            SELECT @Counter = @Counter + 1  
          END    
        EXEC (@TruncLog)   
      END    
    SELECT 'Final Size of ' + db_name() + ' LOG is ' +  
            CONVERT(VARCHAR(30),size) + ' 8K pages or ' +  
            CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'  
      FROM sysfiles  
      WHERE name = @LogicalFileName  
    DROP TABLE DummyTrans  
    SET NOCOUNT OFF

您可能感兴趣的文章:
sql2000 删除大日志文件的方法
sql2008 删除太大的日志文件的方法
如何减小Sql2005日志文件大小
sql日志清除的方法介绍
sql2005 清除日志的方法介绍
sql server数据库日志已满的解决方法
删除SQL Server日志的方法详解


    
 
 

您可能感兴趣的文章:

  • SQL语句中含有乘号报错的处理办法
  • Sql Server忘记密码的解决办法
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • Oracle 实现类似SQL Server中自增字段的一个办法
  • Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
  • SQL Server 死锁原因分析与解决办法
  • sql2000 卸载后重新安装时不能安装的解决办法
  • sql server 2005数据附加失败报错3456的解决办法
  • sql server维护计划自动备份数据库作业执行失败会自动生成abc82作业的解决办法
  • SQL Server管理器无法连接远程数据库Error: 1326错误的解决办法
  • 请教用jdbc驱动连接sql server数据库的配置和使用办法!谢谢
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • (X86/X64)安装sql server 2005 过程中提示“无法启动sql server的 启动”的解决方法
  • sql无效字符引起的执行sql语句报错的解决方法
  • 安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法
  • sql server 代理(已禁用代理xp)的解决方法
  • 解决:未与信任SQL Server连接相关联的问题
  • sql无效字符 执行sql语句报错解决方案
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
  • SQL Server代理服务无法启动的解决方法
  • Oracle Sql语句长度限制问题及解决
  • sql 单引号查询异常的解决方法
  • sql server表死锁查不出数据的解决方法
  • Sql2000与Sql2005共存安装的解决方法
  • Microsoft SQL Server 2005 错误 29503 的解决方法
  • sa用户无法登录sql server 2005的解决方法
  • SQL Server 2005 还原数据库错误解决方法
  • sql server 复制路径出问题的解决方法
  • sql server2012附加数据库问题解决方法
  • SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • 查询SQL Server中所有数据库的数据文件位置的sql脚本
  • 根据Hibernte的cfg文件生成sql文件
  • SQL Server 2008无日志文件如何使用MDF文件附加数据库
  • 修改数据库文件及日志文件增量的sql语句
  • SQL Server利用bcp命令把SQL语句结果生成文本文件
  • 如何减小Sql2005日志文件大小
  • 使用php语句将数据库*.sql文件导入数据库
  • SQL SERVER导入、导出文本文件的例子
  • linux中把a.sql文件还原数据库a,在线等
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
  • 解析MYSQL 数据库导入SQL 文件出现乱码的问题
  • Web服务器/前端 iis7站长之家
  • PHP导入sql文件三种方法
  • 在linex中,定时导出sql语句的结果到指定文件中
  • radius mysql问题 rlm_sql_mysql.so 这个文件我怎么都没有找到
  • 重装MS SQL Server 2000前必须彻底删除原安装文件的方法
  • SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭
  • SQL Server 压缩日志与减少SQL Server 文件大小的方法
  • 请教:如何用shell实现指定log文件(比如a.log)中的指定内容(SQL_ID和SQL的处理部分)的收集
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3