Как уменьшить размер файла журнала SQL Server

Я не могу понять, как уменьшить размер файла базы данных.

DBA говорит, что я должен использовать backup log dbname with truncate_only

И хотя это выглядит так, как будто оно выполняется правильно в SQL Query Analyzer, размер файла ldf по-прежнему превышает 2 ГБ.

** Разъяснение, основанное на некоторых комментариях и некоторых ответах ниже. *** Конкретная рассматриваемая база данных - это база данных на моем ноутбуке, и я использую ее только для процессов разработки. Файл журнала увеличивался до такой степени, что считалось, что он создает полный диск. Там нет никакого производственного риска. Я понимаю, что метод в вопросе, который я задал, и ответ, который я принял, рискованны в производственной среде. *

3 ответа

Решение

О, ужас! Пожалуйста, перестаньте говорить людям, что они должны сжать свои файлы журнала!

Если вы попали в эту ситуацию, то очень вероятен один из следующих случаев:

  1. Ваша база данных находится в режиме полного восстановления, и она действительно должна быть в простом режиме
  2. Ваша база данных находится в режиме полного восстановления, и вы должны регулярно делать резервные копии журналов.
  3. Ваша база данных находится в режиме полного восстановления, а резервные копии журналов по какой-то причине терпят неудачу
  4. Вы выполняете огромные транзакции, которые увеличивают размер файла журнала

Ответ на каждый из них следующий:

Если (1), то переключите базу данных в простой режим
Если (2), то запланируйте регулярное резервное копирование журнала
Если (3), то исправьте запланированные резервные копии журнала
Если (4), то просто не делайте этого:) Вместо этого, работайте небольшими партиями.

Обратите внимание, что ни один из них не требует использования (не рекомендуется) "резервное имя журнала базы данных с truncate_only"

Вместо этого, как только вы очистите файл журнала, используя один из вышеперечисленных методов, затем сожмите (теперь пустой) журнал с помощью:

DBCC SHRINKFILE ('log logical name', 2000)

Всегда указывайте разумный конечный размер, иначе он уменьшится почти до 0, и в следующий раз, когда он понадобится, потребуется время, чтобы вырасти.

После выполнения "резервного копирования с truncate_only" вы должны выполнить следующую команду, чтобы уменьшить

dbcc SHRINKFILE (logfilename,shrink_tosize)

например

dbcc SHRINKFILE (mydatabase_Log,512)

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

USE <database>;

DBCC SHRINKFILE (<log logical file name>)

Это сократит это для вас.

Другие вопросы по тегам