zoukankan      html  css  js  c++  java
  • SQL清除所有数据库日志脚本

    --SQL清除所有数据库日志脚本
    declare @CurrentDataBaseName nvarchar(100)
    declare @CurrentDataBaseID nvarchar(100)
    declare @CurrentLogName nvarchar(100)
    declare @CurrentClearString nvarchar(4000)
    declare @CurrentLogFileName nvarchar(255)
    declare @CurrentClearLogString nvarchar(2000)
    --查询所有数据库名称
    --select * from   master..sysdatabases   where   dbid>=7
    declare tb cursor local for select name,dbid from master..sysdatabases   where   dbid>=7;
    open tb
    fetch next from tb into @CurrentDataBaseName,@CurrentDataBaseID
    while @@fetch_status=0
    begin
     --查询指定数据库对应的所有日志文件
     --select * from   sys.database_files
     --使用游标查询数据库对应的日志文件
     set @CurrentLogFileName=''
     set @CurrentClearLogString=''
     --select * from sysaltfiles   where   dbid=7 and status>2;
     declare tf cursor local for select name from sysaltfiles   where   dbid=@CurrentDataBaseID and status>2 and groupid<>1;
     open tf
     fetch next from tf into @CurrentLogFileName
     while @@fetch_status=0
     begin
     if @CurrentClearLogString<>''
     begin
     set @CurrentClearLogString+='
        DBCC SHRINKFILE (['+@CurrentLogFileName+'] , 11, TRUNCATEONLY)'
     --print @CurrentClearLogString
     end
     else
     begin
     set @CurrentClearLogString='
        DBCC SHRINKFILE (['+@CurrentLogFileName+'] , 11, TRUNCATEONLY)'
     end
     --print '当前清除日志文件语句'+@CurrentClearLogString
     fetch next from tf into @CurrentLogFileName
     end
     close tf
        deallocate tf
     --print @CurrentClearLogString;
     
    set @CurrentClearString='
        USE [master]
        ALTER DATABASE ['+@CurrentDataBaseName+'] SET RECOVERY SIMPLE WITH NO_WAIT
        ALTER DATABASE ['+@CurrentDataBaseName+'] SET RECOVERY SIMPLE
        USE ['+@CurrentDataBaseName+']'+@CurrentClearLogString+'
        USE [master]
        ALTER DATABASE ['+@CurrentDataBaseName+'] SET RECOVERY FULL WITH NO_WAIT
        ALTER DATABASE ['+@CurrentDataBaseName+'] SET RECOVERY FULL'
     print @CurrentClearString;
     exec sp_executesql @CurrentClearString;

    print '清除数据库'+@CurrentDataBaseName +'日志完成,操作语句'
    fetch next from tb into @CurrentDataBaseName,@CurrentDataBaseID
    end
    close tb
    deallocate tb

    print '清除所有数据库日志完成'

  • 相关阅读:
    DAY 223 GIT
    swooleHTTP
    swooleWebSocket
    swooleUDP
    swoole异步MySql
    swooleTCP
    谈谈继承的局限性
    也谈过程决定质量
    谁该为参数负责
    使用function改进设计
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306765.html
Copyright © 2011-2022 走看看