• 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 '清除所有数据库日志完成'
    
  • 相关阅读:
    javascript中Function、ArrowFunction和GeneratorFunction介绍
    javascript中Function、ArrowFunction和GeneratorFunction介绍
    26个ASP.NET常用性能优化方法
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    什么是去中心化市场(OpenBazaar)
    去中心化共识
    侧链/楔入式侧链
    零知识证明(Zero Knowledge Proof,ZKP)
  • 原文地址:https://www.cnblogs.com/xuxiaoshuan/p/3247601.html
Copyright © 2020-2023  润新知