すべてのデータベースのログ ファイルを毎週圧縮する必要があります。各データベースをループする 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
または、そうする別の方法はありますか?
ありがとう