Попытайтесь этот сценарий: --INF: Как сжать журнал трудыов сервера 7.0 SQL
-- SQL7
http://support.microsoft.com/support/kb/articles/q256/6/50.asp?id=256650&SD-- SQL7
http://www.support.microsoft.com/kb/256650 -- SQL2000
http://support.microsoft.com/kb/272318/en-us-- SQL2005
http://support.microsoft.com/kb/907511/en-us-- выберите db_name ()
-- выберите * от sysfiles
-- ЭТОТ СЦЕНАРИЙ НЕ ПРЕДНАЗНАЧЕН ДЛЯ ЗАПЛАНИРОВАННОГО ИСПОЛЬЗОВАНИЯ!! ПРОЧИТАЙТЕ BOL и urls!!
УСТАНОВИТЕ NOCOUNT ДАЛЬШЕ
ОБЪЯВИТЕ sysname @LogicalFileName,
@MaxMinutes INT,
@NewSize INT
-- *** ДЕЛАЕТ КОНЕЧНО ДЛЯ ТОГО ЧТОБЫ ИЗМЕНИТЬ СЛЕДУЮЩИЕ 3 ЛИНИИ С ВАШИМИ КРИТЕРИЯМИ. ***
ВЫБЕРИТЕ @LogicalFileName = ''
, -- Используйте sp_helpfile для того чтобы определить логически архив - назовите что вы хотите сжать.
@MaxMinutes = 10, -- Предел на времени позволенном обернуть журнал.
@NewSize = 305 -- в MB
-- Setup/выступите с иничиативой
ОБЪЯВИТЕ @OriginalSize int
ОТБОРНО @OriginalSize = размер -- в страницах 8K
ОТ sysfiles
ГДЕ назовите = @LogicalFileName
ОТБОРНЫЙ «первоначально размер» + db_name () + «ЖУРНАЛ» +
НОВООБРАЩЕННЫЙ (VARCHAR (30), @OriginalSize) + «страницы 8K или» +
ПРЕОБРАЗУЙТЕ (VARCHAR (30), (@ORIGINALSIZE*8/1024)) + «MB»
ОТ sysfiles
ГДЕ назовите = @LogicalFileName
СОЗДАЙТЕ ТАБЛИЦУ DummyTrans
(Чарс DummyColumn (8000) нулевых)
-- Оберните журнал и усеките его.
ОБЪЯВИТЕ @COUNTER INT,
DATETIME @StartTime,
@TruncLog VARCHAR (255)
ВЫБЕРИТЕ @STARTTIME = GETDATE (),
@TruncLog = «РЕЗЕРВНЫЙ ЖУРНАЛ» + db_name () + «С TRUNCATE_ONLY»
-- Судите за первоначально сокращение.
DBCC SHRINKFILE (@LOGICALFILENAME, @NEWSIZE)
EXEC (@TruncLog)
-- Оберните журнал если обязательно.
ПОКА @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE ()) -- время не теряло силу
И @OriginalSize = (ОТБОРНЫЙ размер ОТ sysfiles ГДЕ имя = @LogicalFileName) -- журнал не сжимал
И (@OriginalSize * 8 /1024) > @NewSize -- Значение прошло внутри для нового размера более мало чем в настоящее время размер.
НАЧНИТЕ -- Наружная петля.
ВЫБЕРИТЕ @Counter = 0
ПОКА ((@COUNTER <�> НАЧИНАЕТ -- уточнение
ВВЕДИТЕ ЗНАЧЕНИЯ DummyTrans («журнал заполнения ") -- Потому что будет полем чарса оно вводит 8000 байт.
DELETE DummyTrans
ВЫБЕРИТЕ @Counter = @Counter + 1
КОНЕЦ -- уточнение
EXEC (@TruncLog) -- См. если trunc журнала сжимает его.
КОНЕЦ -- наружная петля
ОТБОРНЫЙ «окончательный размер» + db_name () + «ЖУРНАЛ» +
ПРЕОБРАЗУЙТЕ (VARCHAR (30), размер) + «страницы 8K или» +
ПРЕОБРАЗУЙТЕ (VARCHAR (30), (size*8/1024)) + «MB»
ОТ sysfiles
ГДЕ назовите = @LogicalFileName
УПАДИТЕ ТАБЛИЦА DummyTrans
ПЕЧАТЬ «*** выполняет *** полной базы данных резервное»
УСТАНОВИТЕ NOCOUNT