Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-sql-server:t-sql-script-samples:how-to-get-and-bulk-change-recovery-model-for-all-databases-sql-server

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
microsoft-sql-server:t-sql-script-samples:how-to-get-recovery-mode-for-all-databases [20.08.2017 12:50] – создано Алексей Максимовmicrosoft-sql-server:t-sql-script-samples:how-to-get-and-bulk-change-recovery-model-for-all-databases-sql-server [20.08.2017 14:42] (текущий) Алексей Максимов
Строка 1: Строка 1:
-===== Как получить режим восстановления баз данных SQL Server =====+===== Как получить и изменить режим восстановления (Recovery model) баз данных SQL Server ===== 
 + 
 +{{:microsoft-sql-server:t-sql-script-samples:pasted:20170820-144235.png }} В случае, если резервное копирование баз данных **Microsoft SQL Server** выполняется сторонними средствами, например [[:microsoft-system-center:data-protection-manager|Microsoft System Center DPM]], на регулярной основе, то для экономии дисковой ёмкости сервера БД, можно изменить режим восстановления **Recovery model** с используемого по умолчанию **FULL** на упрощённый **SIMPLE**.
  
 Получить режим восстановления для всех баз данных: Получить режим восстановления для всех баз данных:
  
 <code tsql> <code tsql>
-SELECT name,recovery_model_desc AS Recovery_mode +SELECT name,recovery_model_desc AS Recovery_model 
 FROM sys.databases  FROM sys.databases 
 ORDER BY recovery_model_desc, name</code> ORDER BY recovery_model_desc, name</code>
  
  
-Другой вариант получить режим восстановления для всех баз данных за исключением системных:+Другой вариант получить режим восстановления для всех баз данныхза исключением системных:
  
-<code tsql>SELECT [name], DATABASEPROPERTYEX([name],'recovery') AS Recovery_mode+<code tsql>SELECT [name], DATABASEPROPERTYEX([name],'recovery') AS Recovery_model
 FROM sysdatabases FROM sysdatabases
 WHERE name not in ('master','model','tempdb','msdb' WHERE name not in ('master','model','tempdb','msdb'
-ORDER BY Recovery_mode, name</code>+ORDER BY Recovery_model, name</code> 
 + 
 + 
 +Как изменить режим восстановления на **SIMPLE** для всех баз дынных, за исключением системных:
  
 +<code tsql>USE MASTER
 +declare
 +   @isql varchar(2000),
 +   @dbname varchar(64),
 +   @logfile varchar(128)
 +   
 +   declare c1 cursor for 
 +   SELECT  d.name, mf.name as logfile
 +   FROM sys.master_files mf
 +      inner join sys.databases d
 +      on mf.database_id = d.database_id
 +   where recovery_model_desc <> 'SIMPLE'
 +   and d.name not in ('master','model','msdb','tempdb'
 +   and mf.type_desc = 'LOG'   
 +   open c1
 +   fetch next from c1 into @dbname, @logfile
 +   While @@fetch_status <> -1
 +      begin
 + 
 +      select @isql = 'ALTER DATABASE ' + @dbname + ' SET RECOVERY SIMPLE'
 +      print @isql
 +      exec(@isql)
 +      select @isql='USE ' + @dbname + ' checkpoint'
 +      print @isql
 +      exec(@isql)
 +      select @isql='USE ' + @dbname + ' DBCC SHRINKFILE (' + @logfile + ', 1)'
 +      print @isql
 +      exec(@isql)
 +      
 +      fetch next from c1 into @dbname, @logfile
 +      end
 +   close c1
 +   deallocate c1
 +</code>
  
 ---- ----
Строка 26: Строка 65:
 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 20.08.2017 12:44 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 20.08.2017 12:44
  
-{{tag>SQL "Microsoft SQL Server" Database T-SQL Transact-SQL}}+{{tag>SQL "Microsoft SQL Server" Database T-SQL Transact-SQL "Recovery model"}}
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
microsoft-sql-server/t-sql-script-samples/how-to-get-and-bulk-change-recovery-model-for-all-databases-sql-server.1503222630.txt.gz · Последнее изменение: 20.08.2017 12:50 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki