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 '清除所有数据库日志完成'
    
  • 相关阅读:
    戴尔英语09年互联网络投放策略规划书
    haproxy相关
    邮送广告
    python和rails交互应用
    ubuntu搭建邮件服务器
    waitr自动化测试
    ruby写爬虫
    free git svn repositories
    网站开发外包遇到的问题
    电影推荐
  • 原文地址:https://www.cnblogs.com/xuxiaoshuan/p/3247601.html
Copyright © 2011-2022 走看看