Номер ошибки: 285895 (SQL BU отслеживания дефектов)ошибка #: 44510 (Content Maintenance)

Обзор

В Microsoft SQL Server 2005 можно сжать файл журнала транзакций в базе данных для удаления неиспользуемых страниц. Компонент database engine эффективно использует пространство. Тем не менее когда неожиданно роста файла журнала транзакций, может потребоваться вручную сжать файл журнала транзакций.

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

Сжатие журнала транзакций в SQL Server 2000 с DBCC SHRINKFILE 272318

Дополнительные сведения

В SQL Server 2005 операция сжатия (DBCC SHRINKFILE) пытается немедленно сжать указанного журнала транзакций до требуемого размера. Чтобы сжать файл журнала транзакций вручную при использовании модели полного восстановления, резервное копирование журнала транзакций. Затем используется инструкция DBCC SHRINKFILE сжать файл журнала транзакций.

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

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

Однако в SQL Server 2005 можно выполнять одной инструкции DBCC SHRINKFILE сжать файл журнала транзакций непосредственно 2 виртуальные файлы журнала. Это можно сделать, так как диспетчер журналов SQL Server 2005 создает 2 виртуальных файлов журнала в порядке хранения физического диска. В начале файла журнала транзакций, оба виртуальных файлов журнала.

При попытке сжать файл журнала транзакций, в котором мало свободного места в SQL Server 2005, может потребоваться выполнить операцию резервного копирования дополнительный журнал. Операции резервного копирования журнала дополнительных усекает для меньшего размера файла журнала транзакций. Эта операция резервного копирования журнала — только три шага, которые выполняют для уменьшения размера файла журнала транзакций в SQL Server 2000. Для получения дополнительных сведений обратитесь к статье базы знаний Майкрософт, описанное в разделе «Аннотация». Чтобы сжать файл журнала транзакций, в котором мало свободного места в SQL Server 2005, выполните следующие действия.

  1. Создайте резервную копию журнала транзакций, чтобы сделать неактивным большинство активных виртуальных файлов журнала. Таким образом в дальнейшем можно удалить неактивные виртуальные файлы журнала. Чтобы сделать это, запустите среду SQL Server Management Studio и запустите инструкцию Transact-SQL, которая напоминает следующую инструкцию Transact-SQL.

    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'

    Примечание. В данном заявлении < имя_базы_данных > — это имя базы данных, резервного копирования и < BackupFile > — это полный путь к файлу резервной копии.

    Например выполните следующую инструкцию Transact-SQL.

    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. Сжать файл журнала транзакций. Чтобы сделать это, выполните инструкцию Transact-SQL, которая напоминает следующую инструкцию Transact-SQL.

    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS

    Примечание. В данном заявлении < имя_файла > — это имя файла журнала транзакций, а < TargetSize > — это размер целевого файла журнала транзакций для. Целевой размер должен быть разумным. Например размера, меньше, чем 2 виртуальных файлов журнала не удается сжать файл журнала транзакций.

  3. Если инструкция DBCC SHRINKFILE не удалось сжать файл журнала транзакций для целевого размера, запустите инструкцию BACKUP LOG, указанное на шаге 1, чтобы сделать неактивным несколько виртуальных файлов журнала.

  4. Выполнение инструкции DBCC SHRINKFILE описанное в шаге 2. После этой операции журнала транзакций должно быть близким к целевого размера.

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

  • Если файл журнала имеет достаточное количество свободного места, при сжатии файла журнала транзакций в SQL Server 2005 работает быстрее, чем при сжатии файла журнала транзакций в SQL Server 2000.

  • Если файл журнала отсутствует свободное место, при сжатии файла журнала транзакций в SQL Server 2005 является таким же, как при сжатии файла журнала транзакций в SQL Server 2000.

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

Ссылки

Дополнительные сведения о том, как уменьшение размера журнала транзакций посетите веб-узел Microsoft Developer Network (MSDN) Сжатие журнала транзакций .


Дополнительные сведения об инструкции DBCC SHRINKFILE посетите веб-узел MSDN DBCC SHRINKFILE (Transact-SQL) .


Дополнительные сведения об усечении журналов транзакций посетите веб-узел MSDN Усечение журнала транзакций .

Нужна дополнительная помощь?

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

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?

Спасибо за ваш отзыв!

×