zoukankan      html  css  js  c++  java
  • 游标的使用之压缩数据库Log文件

    declare @databasename nvarchar(100)
    --定义游标以及赋值 获取所有Online的Database Name
    declare getDataBaseCursor  cursor for select name from  master.sys.databases where state_desc='online'
    --在使用游标之前必须打开它,打开游标
    open getDataBaseCursor
    --使用fetcth语句取得数据,一条FETCH语句一次可以将一条记录放入指定的变量中,达到Shrink每个DB的效果
    fetch next from getDataBaseCursor into @databasename
    while @@FETCH_STATUS = 0
    begin
     declare @RecoveryModel nvarchar(20)
     declare @sql nvarchar(100)
     declare @logfileid int
     select @RecoveryModel= cast(DATABASEPROPERTYEX(name,'RECOVERY') as varchar(20)) from master..sysdatabases where name =@databasename
     IF @RecoveryModel<>'SIMPLE'
      begin
                    EXEC ('ALTER DATABASE '+@databasename +' SET RECOVERY SIMPLE')
     end
     declare @dsql nvarchar(200)
     set @dsql=N'select @logfileid = file_id from ' + @databasename+ N'.sys.database_files where type_desc = ''LOG'''
     exec sp_executesql @dsql,N'@logfileid int output',@logfileid output
     EXEC('use '+@databasename+ ' DBCC SHRINKFILE( '+@logfileid+')')
    fetch next from getDataBaseCursor into @databasename
    end
    --在游标操作的最后请不要忘记关闭游标,以使系统释放游标占用的资源
    CLOSE getDataBaseCursor
    --删除游标
    DEALLOCATE getDataBaseCursor

    生活不是用眼泪博得同情 而是用汗水赢得掌声
  • 相关阅读:
    <cf>Square
    运算符重载
    HDU 1231 最大连续子序列
    Biorhythms(poj1006)
    友元和友元函数
    <poj 1046>Color Me Less
    <cf> Funky Numbers
    VC++中窗口的最大化问题
    励志文章,没事看一下(网上摘录)
    VC多线程编程(转)
  • 原文地址:https://www.cnblogs.com/tutuyforever/p/4797146.html
Copyright © 2011-2022 走看看