Как управлять размером журнала сервера S'L

Я пытаюсь управлять размером с файл журнала S'L Server 2008. У меня есть база данных отчетности, которая загружается один раз в день. Модель простого восстановления лучше всего подходит, так как нет никаких транзакций, кроме утренней нагрузки, и я могу воссоздать эти записи. Мои цели заключаются в том, чтобы журнал транзакций был фиксированным размером, достаточно большим, чтобы он не должен выделять новое пространство во время загрузки.

Моя проблема заключается в том, что журнал продолжает расти. Я знаю, что журнал должен быть помечен для повторного использования, но почему журнал продолжает расти? В log_reuse_wait_desc показывает "Ничего".

Я могу уменьшить файл журнала до 1 МБ, так что я знаю Есть нет сделок в нем. Я могу создать работу, чтобы сделать это, но я предпочел бы оставить журнал на 500MB, что достаточно для обработки ежедневных нагрузок. Если я делаю это, журнал растет.

Как я могу держать журнал на согласованный размер?

Пожалуйста, обратите внимание: Сжатие файла журнала не решает эту проблему. Я знаю, как это сделать. Я пытаюсь найти способ повторного использования места в журнале транзакций.

Ответ на: "Как управлять размером журнала сервера S'L"

Количество ответов:4

создать работу по техническому обслуживанию, которая резервное копирование DB и сжимает журнал

С верхней части моей головы вы можете использовать DBCC SHRINKFILE для этого.

Команда DBCC Shrinkfile позволяет указать целевой размер:

DBCC SHRINKFILE (DataFile1, 7)

Сжимает файл DataFile1 до 7MB

Документ по адресу: MSDN

(Я использую S'L Server 2005)

  1. Запуск Microsoft S'L Server Management Studio
  2. Найдите базу данных и нажмите на нее. Выберите Свойства.
  3. Нажмите на файлы разделе
  4. Найдите линию LOG FILE.
  5. Изменение первоначального размера: 500
  6. Найдите раздел Autogrowth и нажмите на эллипс (...)
  7. Uncheck "Включить авторост". Нажмите OK.
  8. Нажмите OK, чтобы внести изменения.

Примечание: Вы также можете установить максимальный размер файла журнала в разделе "авторост".

Кроме того, вы можете использовать следующий скрипт, чтобы внести изменения. Замените DATABASENAME соответствующим значением. Также измените имя файла журнала, если это необходимо.

USE [master]
GO
ALTER DATABASE [DatabaseName] MODIFY FILE ( NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0)
GO

Файл журнала используется для транзакционных целей, даже если база данных находится в SIMPLE RECOVERY MODE. Если размер LOG действительно растет за 500 МБ, то кто-то работает запрос или сохранены процедуры, которая требует этого пространства. Например, возможно, вы создаете индексы на основе таблиц отчетности. Это будет сделано внутри транзакции, так что изменения могут быть откатаны в случае ошибки. Однако использованное пространство будет выпущено после завершения других транзакций.

Таким образом, если размер журнала начинается с 1 МБ и увеличивается, чтобы сказать, 700 МБ, то что-то делается, что требует этого пространства. Если вы заблокируете размер до 500 МБ, вы в конечном итоге получите ошибку "файл журнала из космоса".

Но если вы действительно хотите, чтобы исправить его на 500MB, вы можете сделать следующее: