Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
Здравствуйте всем.
Помогите реализовать задачу в виде SQL-скрипта (MSSQL 2014 Std):
Для всех пользовательских баз - если база в режиме Recovery=FULL, то перевести её в SET RECOVERY SIMPLE и уменьшить лог до 10
11 янв 17, 11:27    [20092730]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
keepermode,
а в чём проблема, по отдельности есть всё в мсдн
11 янв 17, 11:28    [20092746]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
Можно ли построить SQL-скрипт приблизительно такой:

FOR (проверить все пользовательские базы на режим FULL)
USE [db]
IF Recovery=FULL

ALTER DATABASE [db] SET RECOVERY SIMPLE
DBCC SHRINKFILE (N'db_Log', 10)
GO
11 янв 17, 12:23    [20093082]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
Курсором пройтись по представлению sys.databases с соответствующим фильтром. Дальше ALTER DATABASE [Имя базы] SET RECOVERY..., ну и ALTER DATABASE [Имя базы] MODIFY FILE....
11 янв 17, 12:23    [20093089]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8816
Даже сотню баз за полдня руками перевести можно. Админу за то и платят.
11 янв 17, 12:39    [20093199]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
komrad
Member

Откуда:
Сообщений: 5744
Владислав Колосов
Даже сотню баз за полдня руками перевести можно. Админу за то и платят.

можно, конечно, я можно и упростить себе жизнь


+
set nocount on
declare @dbs table (name varchar(255))
declare @db varchar(255)
declare @cmd varchar(2048)

insert into @dbs(name) 
select name
from sys.databases 
where recovery_model_desc='FULL'
	and is_read_only=0
	and DATABASEPROPERTYEX(name,'Status')='ONLINE'
	and database_id between 4 and 32000

while exists (select top 1 1 from @dbs)
	begin
		select top 1 @db=name from @dbs

		select @cmd='alter database '+quotename(@db) +' set recovery simple'+char(10)+'go'+char(10)
		select @cmd=@cmd+'use '+QUOTENAME(@db)+char(10)+'go'+char(10)
		select @cmd=@cmd+'dbcc shrinkfile(2,10)'+char(10)+'go'+char(10)

		print @cmd
		-- exec (@cmd)

		delete @dbs where name=@db
	end

11 янв 17, 12:59    [20093324]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
komrad , как в T-SQL построить цикл с проверкой базы на режим Full ?
(USE [db]
IF Recovery=FULL)
11 янв 17, 13:11    [20093395]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
keepermode
komrad , как в T-SQL построить цикл с проверкой базы на режим Full ?
(USE [db]
IF Recovery=FULL)

мда... лень.. он же всё написал
тип узнать
SELECT recovery_model_desc FROM sys.databases
11 янв 17, 13:13    [20093408]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
TaPaK , спасибо, уже кое-что... Теперь надо построить проверку на FULL
11 янв 17, 13:29    [20093495]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
keepermode
TaPaK , спасибо, уже кое-что... Теперь надо построить проверку на FULL

а вам вообще точно можно такие вещи с базами делать?
11 янв 17, 13:31    [20093502]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
TaPaK , да, можно
11 янв 17, 13:37    [20093536]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Может, лучше бэкапы настроить?..
11 янв 17, 13:49    [20093599]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
komrad
Member

Откуда:
Сообщений: 5744
keepermode
TaPaK , спасибо, уже кое-что... Теперь надо построить проверку на FULL

на плюсик нажать в моем предыдущем сообщении не судьба?

там же готовый скрипт
и если совсем не страшно, то можно раскомментить строку
-- exec (@sql)
11 янв 17, 13:56    [20093648]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
komrad , спасибо!
11 янв 17, 14:04    [20093691]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
Гавриленко Сергей Алексеевич
Может, лучше бэкапы настроить?..

бэкапы настроены, задачу я описывал - отследить возможные изменения параметров баз, в т.ч. режимов Recovery. Спасибо всем!!!
11 янв 17, 14:09    [20093722]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8816
keepermode,

для этого существуют политики.
11 янв 17, 15:23    [20094136]     Ответить | Цитировать Сообщить модератору
 Re: SQL-скрипт: Если база в режиме FULL, то перевести её в SIMPLE  [new]
keepermode
Member

Откуда:
Сообщений: 78
Владислав Колосов, ок
11 янв 17, 16:29    [20094568]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить