Вопрос

Я ищу некоторую ясность в файле журнала SQL Server. У меня есть большая база данных (2 ГБ), которая в последнее время по какой-либо причине не была заархивирована. Размер файла журнала для базы данных вырос до примерно 11 ГБ, и, насколько я понимаю, это все транзакции и операторы, которые произошли в базе данных.

Мои вопросы:

Что вызывает сброс файла журнала базы данных? Что означает & Quot; flush & Quot; на самом деле значит? Каковы последствия уменьшения размера файла или базы данных для большого файла журнала?

Это было полезно?

Решение

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

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

Когда вы уменьшаете базу данных, используйте DBCC SHRINKFILE , а не < a href = "http://msdn.microsoft.com/en-us/library/ms190488.aspx" rel = "noreferrer"> DBCC SHRINKDATABASE , так как последний сократит всю базу данных, а не только файл журнала , Кроме того, вы не контролируете, сколько места восстанавливается.

Другие советы

Резервная копия обычно очищает журнал транзакций. Журнал транзакций сохраняет все изменения с момента последнего резервного копирования. В зависимости от способа резервного копирования базы данных вам может не потребоваться вести полный журнал транзакций вообще. Если вы используете MS SQL2000 / MS SQL2005, установка режима восстановления на Простой отменяет журнал транзакций.

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

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

На самом деле, я не верю, что резервное копирование базы данных сокращает журналы, а резервное копирование самих журналов транзакций сокращает ее. SQL Server проводит различие между ними.

Обычно я создаю все базы данных " Simple " восстановление или создание резервных копий журналов транзакций является частью моего плана регулярного обслуживания (обычно раз в неделю).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top