Подтвердить что ты не робот

Как я могу управлять размером журнала SQL Server

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

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

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

Как я могу сохранить журнал в согласованном размере?

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

4b9b3361

Ответ 1

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

Например, возможно, вы создаете индексы против ваших таблиц отчетов. Это будет сделано внутри транзакции, так что изменения могут быть отброшены в случае ошибки. Тем не менее, используемое пространство будет выпущено впоследствии для других транзакций после завершения.

Итак, если размер журнала начинается с 1 МБ и увеличивается, скажем, 700 МБ, то что-то делается, что требует этого пространства. Если вы заблокируете размер до 500 МБ, вы в конечном итоге получите ошибку "log file out space".

Но если вы действительно хотите исправить его на уровне 500 МБ, вы можете сделать следующее: (Я использую SQL Server 2005)

  • Запуск Microsoft SQL Server Management Studio
  • Найдите свою базу данных и щелкните ее правой кнопкой мыши. Выберите "Свойства".
  • Выберите раздел "Файлы"
  • Найдите строку журнала FILE.
  • Измените начальный размер на: 500
  • Найдите раздел "Авторазработка" и нажмите на эллипс (...)
  • Снимите флажок "Включить авторазборку". Нажмите "ОК".
  • Нажмите OK, чтобы внести изменения.

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

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

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

Ответ 2

создать задание на обслуживание, которое создает резервную копию БД и сжимает журнал

Ответ 3

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

DBCC SHRINKFILE (DataFile1, 7)

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

Документ: MSDN

Ответ 4

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