• 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 '清除所有数据库日志完成'

  • 相关阅读:
    JSON.parse与eval
    加密算法
    asp.net权限管理
    asp.net登录状态验证
    U3D Debug.log的问题
    yield(C# 参考)
    U3D 动态创建Prefab的多个实例
    U3D事件系统总结
    C#事件与接口
    C#泛型委托,匿名方法,匿名类
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306765.html
Copyright © 2020-2023  润新知