码迷,mamicode.com
首页 > 数据库 > 详细

游标的使用之压缩数据库Log文件

时间:2015-09-10 13:07:34      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

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

游标的使用之压缩数据库Log文件

标签:

原文地址:http://www.cnblogs.com/tutuyforever/p/4797146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!