ВЫПОЛНЕНИЕ ОПЕРАЦИЙ НАД НЕСКОЛЬКИМИ ИЛИ ВСЕМИ БАЗАМИ MS SQL

ВЫПОЛНЕНИЕ ОПЕРАЦИЙ НАД НЕСКОЛЬКИМИ ИЛИ ВСЕМИ БАЗАМИ MS SQL

--select * from [master].[sys].[databases]
 --кого пропустить ('master','tempdb','model','msdb')
 --логи правильно чистить так: DBCC SHRINKFILE ('+@name+ '_log, X) where X is the target size in MB.
 --Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE 

declare @name nvarchar(512)
 declare @cmd nvarchar(512)
 DECLARE @Cursor CURSOR
 SET @Cursor = CURSOR FOR
 select name from [master].[sys].[databases]
 where not name in ('master','tempdb','model','msdb')
 
OPEN @Cursor
 FETCH NEXT FROM @Cursor INTO @name
 
WHILE (@@FETCH_STATUS = 0)
 BEGIN
 print @name
 set @cmd =
 'USE ['+@name+']
 ALTER DATABASE '+@name+' SET RECOVERY SIMPLE
 DBCC SHRINKFILE (N'''+@name+ '_log'', 0, TRUNCATEONLY)
 ALTER DATABASE '+@name+' SET RECOVERY FULL'
 
print @cmd
 exec (@cmd)
 
FETCH NEXT FROM @Cursor INTO @name
 end

Т.е. выполняется‘USE [‘+@name+‘]
ALTER DATABASE ‘+@name+‘ SET RECOVERY SIMPLE
DBCC SHRINKFILE (N’”+@name+ ‘_log’‘, 0, TRUNCATEONLY)’
 ALTER DATABASE '+@name+' SET RECOVERY FULL

над всеми базами, кроме ‘master’,’tempdb’,’model’,’msdb’
ВАЖНО!: Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE !!

< Назад к списку новостей