Код статьи: 873235 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Введение

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

Дополнительная информация

Уменьшение размера журнала транзакций

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

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


Дополнительные сведения об уменьшении размера журнала транзакций см. на следующем веб-сайте корпорации Майкрософт:
Уменьшение размера журнала транзакций в SQL Server 2000
Уменьшение размера журнала транзакций в SQL Server 2005

Удаление завершенных транзакций из журнала

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

Дополнительные сведения об архивации журнала транзакций и восстановлении журнала из архивной копии см. в следующих разделах электронной документации по SQL Server:
  • Transaction log backups (Архивные копии журнала транзакций)
  • Transaction log backup and restore (Архивация и восстановление журнала транзакций)
Кроме того, журнал транзакций можно очистить вручную. Для этого используется метод Truncate. Дополнительные сведения об очистке журнала транзакций можно получить в разделе «Truncating the transaction log» (Очистка журнала транзакций) электронной документации по SQL Server.

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

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

Уменьшение размера файла журнала транзакций

Резервное копирование и метод Truncate не уменьшает размер файла журнала. Для уменьшения размера файла журнала транзакций до заданного значения и удаления ненужных страниц необходимо использовать операцию DBCC SHRINKFILE. Оператор DBCC SHRINKFILE Transact-SQL может сократить размер файла журнала транзакций только на величину свободного пространства внутри файла.

Примечание. Оператор DBCC SHRINKFILE Transact-SQL может сократить размер файла журнала транзакций только на величину свободного пространства внутри файла.

Дополнительные сведения о процедуре уменьшения файла журнала транзакций см. в следующих разделах электронной документации по SQL Server:
  • Shrinking the transaction log (Уменьшение размера журнала транзакций)
  • DBCC SHRINKFILE (Оператор DBCC SHRINKFILE)
Дополнительные сведения о процедуре уменьшения файла журнала транзакций SQL Server 2000 см. в следующей статье базы знаний Майкрософт:
272318 INF: Использование оператора DBCC SHRINKFILE для сжатия журнала транзакций в SQL Server 2000
Дополнительные сведения о проблемах, которые могут возникнуть при уменьшении файла журнала транзакций, см. в следующих статьях базы знаний Майкрософт:
814574 PRB: При попытке уменьшить размер файла журнала транзакций появляется сообщение об ошибке «Cannot shrink log file ...» (эта ссылка может указывать на содержимое полностью или частично на английском языке)
324432 PRB: Операции DBCC SHRINKFILE и SHRINKDATABASE не уменьшают размер файлов вследствие наличия в базе данных разреженно заполненных полей типа text, ntext и image (эта ссылка может указывать на содержимое полностью или частично на английском языке)

Как предотвратить неконтролируемое увеличение размера журнала транзакций

Чтобы предотвратить неконтролируемое увеличение размера журнала транзакций, можно воспользоваться одним из следующих способов.
  • Установить достаточно большое значение параметра размера файла журнала транзакций, чтобы предотвратить автоматическое увеличение файла.
  • Оценить потребности файла журнала транзакций в дисковом пространстве, обеспечивающие оптимальное функционирование базы данных, после чего задать параметр автоматического наращивания файла журнала транзакций в единицах памяти вместо процентов.

    Дополнительные сведения о настройке параметра автоматического наращивания см. в следующей статье базы знаний Майкрософт:
    315512 Замечания по настройке параметров autogrow и autoshrink (эта ссылка может указывать на содержимое полностью или частично на английском языке)
  • Изменить модель восстановления базы данных. В случае потери информации или повреждения базы данных SQL Server позволяет произвести операцию восстановления, которая восстанавливает целостность данных и транзакционную целостность базы данных. В зависимости от важности информации, хранимой в базе данных, можно выбрать одну из следующих моделей восстановления:
    • простая модель восстановления;
    • полная модель восстановления;
    • модель восстановления с групповым ведением журнала.
    При использовании простой модели восстановления состояние базы данных может быть восстановлено только до точки создания последней резервной копии. Полная модель восстановления и модель восстановления с групповым ведением журнала позволяют восстановить состояние базы данных на момент возникновения ошибки, для чего используется журнал транзакций и его резервные копии.

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

    Если не планируется использовать журнал транзакций для восстановления данных в случае повреждения БД, можно переключить модель восстановления с полной на простую.
  • Регулярно создавайте резервную копию журнала транзакций, так как эта операция также удаляет завершенные транзакции из журнала.
  • Транзакции должны быть настолько небольшими, насколько это возможно.
  • Необходимо контролировать завершение транзакций и следить за тем, чтобы в базе данных не существовало незавершенных транзакций длящихся неопределенное время.
  • Настроить ежедневное обновление статистики базы данных.
  • Для дефрагментации индексов следует использовать оператор Transact-SQL DBCC INDEXDEFRAG, но не DBCC DBREINDEX. Если для базы данных SQL Server установлена полная модель восстановления, то при выполнении оператора DBCC DBREINDEX журнал транзакций может значительно увеличиться. Кроме того, оператор DBCC INDEXDEFRAG не выставляет столь долгих блокировок, как оператор DBCC DBREINDEX.

    Дополнительные сведения о дефрагментации индексов в SQL Server 2000 см. на веб-сайте Майкрософт по адресу: Если инструкцию DBCC DBREINDEX нужно использовать в качестве задания, которое является частью плана обслуживания базы данных, необходимо разбить это задание на несколько частей и производить резервное копирование журнала транзакций между их выполнением.

Дополнительные сведения о файлах журналов транзакций

В SQL Server 2000 SQL и Server 2005 каждая база данных содержит как минимум один файл данных и один файл журнала транзакций. Вся информация БД содержится в файле данных. Журнал транзакций хранит записи о всех произведенных в БД SQL Server изменениях и подробную информацию о каждой из транзакций, в ходе которых эти изменения выполнялись. Поскольку поддержка целостности данных является одним из основных принципов функционирования SQL Server, отключить журнал транзакций невозможно.

Логически файл журнала транзакций разбит на секции, называемые виртуальными файлами журнала. SQL Server 2000 дает пользователю возможность настроить параметры, контролирующие увеличение файла журнала транзакций. Размер журнала транзакций может контролироваться пользователем, или же параметры могут быть настроены таким образом, чтобы журнал транзакций неограниченно увеличивался вплоть до исчерпания свободного пространства на диске. Изменение размера (сокращение или наращивание) файла журнала транзакций всегда пропорционально размеру виртуального файла журнала.

Если журнал транзакций определенной БД SQL Server заполнен и установлен параметр автоматического наращивания файла журнала, журнал транзакций увеличивается путем добавления к нему определенного количества виртуальных файлов журнала. Файл журнала транзакций может стать настолько большим, что займет все доступное на диске место. В этом случае SQL Server перестанет выполнять операции, требующие внесения изменений в базу данных. Кроме того, при нехватке дискового пространства для журнала транзакций SQL Server может присвоить БД статус «suspect».

Дополнительные сведения о возможных причинах неконтролируемого увеличения размера журнала транзакций см. в следующей статье базы знаний Майкрософт:
317375 Неконтролируемое увеличение размера и переполнение журнала транзакций сервера SQL Server (эта ссылка может указывать на содержимое полностью или частично на английском языке)

Ссылки

Дополнительные сведения о требованиях к дисковому пространству, предъявляемых в процессе восстановления базы данных, см. в разделе «Insufficient disk space» электронной документации по SQL Server. Дополнительные сведения о структуре журнала транзакций см. в следующих разделах электронной документации по SQL Server:
  • Transaction log architecture (Архитектура журнала транзакций)
  • Transaction log logical architecture (Логическая архитектура журнала транзакций)
  • Transaction log physical architecture (Физическая архитектура журнала транзакций)
Дополнительные сведения об использовании различных моделей восстановления базы данных см. в следующих разделах электронной документации по SQL Server:
  • Selecting a recovery model (Выбор модели восстановления)
  • Simple recovery (Простое восстановление)
  • Full recovery (Полное восстановление)
  • Bulk-logged recovery (Восстановление с групповым ведением журнала)
  • Switching recovery models (Изменение модели восстановления)

Свойства

Код статьи: 873235 - Последний отзыв: 16 июля 2013 г. - Revision: 3.2
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Ключевые слова: 
kbsqlsetup kbdiskmemory kbdisasterrec kbhowto kbconfig kbinfo kbcip KB873235

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com