Каталог решений - Сжатие логов журнала транзакции MS SQL

Сжатие логов журнала транзакции MS SQL

Сжатие логов журнала транзакции MS SQL

В наличии

Автоматический шринк журнала транзакций и перевод базы в простой режим восстановления.

Категория:

Описание

Предыстория

На SQL сервере развернуто порядка 100 тестовых баз. Разворачивают в основном рабочие базы с режимом восстановления "Полный" и периодически забывая переводить в "Простую". В связи с чем на сервере стали занимать много мест журналы транзакций. Вначале шринк журнала проходил руками, но потом это надоело и я решил это немного автоматизировать. Написал скрипт, который, пробегаясь по всем базам, кроме системных, переводит каждую в "Простой" режим восстановления и делает шринк журнала. Скрипт повесил на задание, для автоматического выполнения по расписанию.  

----------------------------------------------------------
-- СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ
declare @db_name nvarchar(100) --имя базы данных
declare cursor_size_srv cursor for

--выбираем все базы кроме системных
SELECT  name AS DBName 
FROM    sys.databases
where name not in ('master','msdb','model','tempdb') 
ORDER BY Name; 

-- Цикл по всем базам, попавшим в выборку
OPEN cursor_size_srv
FETCH NEXT FROM cursor_size_srv INTO @db_name

WHILE (@@FETCH_STATUS=0)
	BEGIN	
		-- База данных из цикла
		exec ('declare @logname nvarchar(100)
				USE [' + @db_name + ']
				SELECT @logname = name   FROM sys.database_files where type = 1
				ALTER DATABASE ' + @db_name + ' SET RECOVERY SIMPLE 
				DBCC SHRINKFILE (@logname , 10, TRUNCATEONLY)')
		-- Следующая база данных
		FETCH NEXT FROM cursor_size_srv INTO @db_name
	END
CLOSE cursor_size_srv
DEALLOCATE cursor_size_srv
----------------------------------------------------------

 

has been added to your cart:
Оформление заказа