Собрано из Интернета, систематизировано и использовано.
SQL2005 имеет более 1 гигабайта журналов и иногда не может быть очищен. Итак, я нашел этот код.
Иногда журнал очистки не очищается до 1M. Выполните его несколько раз. В обычных обстоятельствах его можно выполнить один раз.
Я сталкивался с ситуациями, когда мне приходилось выполнять его дважды.
1 ВЫБЕРИТЕ @LogicalFileName = 'Test_log',
Test_log — логическое имя журнала.
4
5
6 -- ===========================================
7 -- Автор: боец
8 -- Дата создания: 15 марта 2009 г.
9 -- Описание: очистить журнал sql.
10 -- ===========================================
11 СОЗДАНИЕ ПРОЦЕДУРЫ [dbo].[tools_ClearSqlLog]
12
13АС
14 НАЧАЛО
15
16 ВКЛЮЧИТЬ NOCOUNT
17 ОБЪЯВИТЕ @LogicalFileName системное имя,
18 @MaxMinutes ИНТ,
19 @NewSizeINT
20
21 SELECT @LogicalFileName = 'Test_log',
22 @MaxMinutes = 1,
23 @NewSize = 1
двадцать четыре
25 -- Настройка/инициализация
26 DECLARE @OriginalSize int
27 ВЫБЕРИТЕ @OriginalSize = размер ИЗ системных файлов ГДЕ name = @LogicalFileName
28 SELECT 'Исходный размер ' + db_name() + ' LOG is ' +
29 CONVERT(VARCHAR(30),@OriginalSize) + ' 8K страниц или ' +
30 CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'МБ'
31 ИЗ системных файлов
32 ГДЕ имя = @LogicalFileName
33
34 СОЗДАТЬ ТАБЛИЦУ DummyTrans
35 (символ DummyColumn (8000) не равен нулю)
36
37
38 DECLARE @Counter INT,
39 @StartTime ДАТАВРЕМЯ,
40 @TruncLog VARCHAR(255)
41 ВЫБЕРИТЕ @StartTime = ПОЛУЧИТЬ ДАТУ(),
42 @TruncLog = 'ЖУРНАЛ РЕЗЕРВНОГО КОПИРОВАНИЯ' + db_name() + 'With TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 ИСПОЛНИТЕЛЬ (@TruncLog)
46 -- При необходимости заверните журнал.
47 WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- время не истекло
48 И @OriginalSize = (ВЫБЕРИТЕ размер ИЗ системных файлов, ГДЕ name = @LogicalFileName)
49 И (@OriginalSize * 8/1024) > @NewSize
50 BEGIN -- Внешний цикл.
51 ВЫБОР @Счетчик = 0
52 WHILE (@Counter < @OriginalSize / 16) И (@Counter < 50000))
53 НАЧАЛО -- обновление
54 ВСТАВИТЬ ЗНАЧЕНИЯ DummyTrans («Заполнить журнал»)
55 УДАЛИТЬ
56 ВЫБРАТЬ @Счетчик = @Счетчик + 1
57КОНЕЦ
58 ИСПОЛНИТЕЛЬ (@TruncLog)
59КОНЕЦ
60 SELECT 'Окончательный размер ' + db_name() + ' LOG is ' +
61 CONVERT(VARCHAR(30),размер) + ' 8 КБ страниц или ' +
62 CONVERT(VARCHAR(30),(размер*8/1024)) + 'МБ'
63 ИЗ системных файлов
64 ГДЕ имя = @LogicalFileName
65
66 ОТПРАВЛЯЮЩИЙ СТОЛ DummyTrans
67 ВЫКЛ.
68
69КОНЕЦ
70
71