zoukankan      html  css  js  c++  java
  • 清除数据库日志语句

    --清除sqlserver 2000/2005 数据库日志

    替换下红字部分数据库名称

    declare @databasename varchar(15)
    select @databasename='hdjjgl_journal'
    DUMP TRANSACTION @databasename WITH NO_LOG
    
    BACKUP LOG @databasename WITH NO_LOG
    
    DBCC SHRINKDATABASE(@databasename) 

    或者

    USE 数据库名
    DUMP  TRANSACTION  数据库名  WITH  NO_LOG
    BACKUP LOG 数据库名 WITH NO_LOG
    DBCC SHRINKFILE(2)


    **********************************
    --清除sqlserver 2008 数据库日志 ,执行两遍

    替换下红字部分数据库名称,建立datalogbak清楚的日志备份文件夹,注意路径自定义。

    use gdzjg_journal
    declare @databasename varchar(100)
    declare @databasenamelog varchar(100)
    declare @databasenamedir varchar(100)
    select @databasename='gdzjg_journal'
    select @databasenamelog=@databasename+'_log'
    select @databasenamedir='g:\datalogbak\'+@databasename
    
    BACKUP LOG @databasename to disk=@databasenamedir
    DBCC SHRINKFILE (@databasenamelog,1)

     或者

    ALTER DATABASE 数据库名称SET RECOVERY SIMPLE
    ALTER DATABASE 数据库名称SET RECOVERY FULL
    DBCC SHRINKDATABASE(数据库名称,0)

    sqlserver 2000、2008会保存所有的数据库操作过程,将指令保存在ldf文件中,如果误删除数据,想恢复数据的话,可以通过Lumigent Log Explorer For SQLServer 软件分析ldf文件,可以看到所有执行过的insert、update、delete数据,导出来再逆向执行即可,本人曾经用过一回,确实奏效。
    
    1、sql server 2000清理数据库日志
    
    USE 数据库名
    
    DUMP  TRANSACTION  数据库名  WITH  NO_LOG
    BACKUP LOG 数据库名 WITH NO_LOG
    DBCC SHRINKFILE(2)
    
    SHRINKFILE(2),后面的2是file_id,可以在当前数据库用select * from sysfiles看得到,看数据库的log文件的fileid是多少,正常情况下log的ldf文件是2,mdf文件的fileid是1。
    这个查询语句可以随时执行,不影响数据库的运行。
    
    sql server 2005、2008清理数据库日志
    
    USE 数据库名
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
    ALTER DATABASE 数据库名 SET RECOVERY FULL
    DBCC SHRINKDATABASE(数据库名,0)
    
    这个查询语句可以随时执行,不影响数据库的运行。
    
    清理ldf的操作可以使用sql server代理,每天自动执行一次,就不怕文件增长撑爆硬盘了。
    
    2、一般mdf用不着收缩,收缩多了容易产生文件碎片,因为delete数据之后,mdf文件中可用页面空间会保留在那里,等下次有新数据进来时,会继续使用。如果实在要清理,可以参考下面的语句:
    
    sql server 200020052008 收缩mdf文件
    
    DBCC SHRINKDATABASE(数据库名)
    DBCC SHRINKFILE(1,0)
    DBCC UPDATEUSAGE(0)
    
    执行上述操作后,你会发现mdf的文件减少了,ldf的文件增大了,再用上面1的日志清理操作一次即可。
    
    3、最后再附送一个查看数据表的行数、占用文件空间、存储情况的查询语句
    
    -- drop table #test
    create table #test(
    name varchar(50),
    rows int,
    reserved varchar(20),
    data varchar(20),
    index_size varchar(20),
    unused varchar(20)
    )
    set nocount on
    insert into #test
    EXEC sp_MSforeachtable @command1="sp_spaceused '?'"
    select * from #test order by cast(replace(reserved,'KB','') as int) desc
  • 相关阅读:
    JS高程3:面向对象的程序设计——理解对象
    JS高程3:函数表达式
    JS高程3:事件
    JS高程3:表单脚本
    InnoDB:表
    InnoDB:文件
    Springboot项目配置druid数据库连接池,并监控统计功能
    linux上修改mysql登陆密码
    上传本地文件到GitHub上
    logback.xml的使用,将日志异步保存到数据库中
  • 原文地址:https://www.cnblogs.com/xuxiaoshuan/p/2731100.html
Copyright © 2011-2022 走看看