Иногда необходимо поменять модель восстановления всех БД на Simple и обратно или выполнить какие либо операции с множеством БД.
Предлагаю пару скриптов, которые помогут выполнить данную задачу.
В данном скрипте выполняется смена модели восстановления на SIMPLE, за исключением баз, указанных в where not name in, и усечение файла транзакций. Данный скрипт необходим на серверах разработки, когда критичность потери данных не высока, а разработчики не утруждают себя выполнением настроек баз, в результате чего журнал транзакций иногда превышает файл данных в 4-5 раз
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | --select * from [master].[sys].[databases]  --кого пропустить ('master','tempdb','model','msdb') 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)' 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)’
над всеми базами, кроме ‘master’,’tempdb’,’model’,’msdb’
Еще одна версия скрипта, которая меняет автоувеличение для файлов данных и файлов транзакций



 Загрузка...
 Загрузка...