Мой файл журнала слишком велик - PullRequest
5 голосов
/ 30 января 2009

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

Ответы [ 9 ]

4 голосов
/ 30 января 2009

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

BACKUP LOG dbname WITH TRUNCATE_ONLY

Причиной этой проблемы является открытая транзакция в более ранней части журнала. SQL не будет усекать журнал после этой транзакции, что может привести к большому, постоянно увеличивающемуся журналу. Вам необходимо выяснить, какие транзакции остаются открытыми и почему. Вы можете контролировать пространство журнала с помощью:

DBCC SQLPERF (LOGSPACE)

Информация о длительных транзакциях может быть найдена с помощью:

DBCC OPENTRAN 

Или:

select * from sys.dm_tran_database_transactions 
4 голосов
/ 30 января 2009

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

3 голосов
/ 30 января 2009

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

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

Стратегия резервного копирования для полного восстановления состоит из:

* Database backups.

* Differential backups (optional).

* Transaction log backups.

Я советую вам обратиться к следующей ссылке Microsoft.

http://msdn.microsoft.com/en-us/library/aa173551(SQL.80).aspx

1 голос
/ 30 января 2009

Вы должны сделать резервную копию ваших журналов, а также основной базы данных

0 голосов
/ 23 ноября 2015

Лучше добавить резервные копии журнала транзакций в ваше расписание.

BACKUP LOG database TO DISK = 'D:/database_log.bak'

Имейте в виду, что в моделях полного или массового восстановления журнал транзакций усекается при создании резервной копии журнала транзакций, поэтому необходимо регулярно делать резервные копии журнала, чтобы управлять размером журнала транзакций. В противном случае файл журнала транзакций будет увеличиваться до тех пор, пока не останется свободного места.

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

0 голосов
/ 30 января 2009

попробуйте это:

dump transaction <dbname> with no_log

, а затем сожмите файл журнала, установив параметр автоусадки в настройках сервера sql или с помощью.

Я думаю, что вы можете использовать dbcc, чтобы уменьшить его, но я не помню синтаксис.

0 голосов
/ 30 января 2009

Это должно сжать это:

dbcc shrinkfile('databasename_log', 0)
0 голосов
/ 30 января 2009

Вы можете использовать какую-то ротацию журналов и вести журнал только фиксированного времени, скажем, последние 7 дней. Этого должно быть более чем достаточно. Или вы можете сбрасывать журнал каждую ночь, потому что он должен быть в вашей резервной копии.

0 голосов
/ 30 января 2009

Удалить файл журнала?

Редактировать: очевидно, что удаление файла журнала - это плохо, просто просто запись на сервер SQL. Я оставляю это, чтобы повторить, что не делать.

...