我需要每周缩小每个数据库的日志文件。我正在编写一个while循环查询来循环每个数据库。但我认为不允许执行以下操作:
declare @database_id int
declare @database varchar(255)
declare @log varchar(255)
declare @cmd varchar(500)
while (select count(*) from #LogFiles where processed = 0) > 0
begin
set @database_id = (select min(database_id) from #LogFiles where processed = 0)
set @database = (select name from #LogFiles where database_id = @database_id and [type] = 0)
set @log = (select name from #LogFiles where database_id = @database_id and [type] = 1)
select @database, @log
set @cmd = 'Use ' + @Database
exec(@cmd)
set @cmd = 'DBCC SHRINKFILE (' + @log + ');'
exec(@cmd)
update #LogFiles
set processed = 1
where database_id = @database_id
end
还是有其他方法可以做到这一点?
谢谢