Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Проблемы

Предположим, что вы используете группу доступности AlwaysOn в базе данных Microsoft SQL Server 2012 или SQL Server 2014, а также есть большая открытая активная транзакция, и для нее требуется дополнительное пространство журнала. Если файл журнала не может увеличиваться по одной из указанных ниже причин, происходит сбой транзакции.

  • Недостаток дополнительного места в файле

  • Настройка файла журнала не растет

  • В файле журнала достигнуто значение, заданное максимальным размером

Кроме того, появляется приведенное ниже сообщение об ошибке:

Ошибка: 9002, уровень важности: 17, состояние: 9. журнал транзакций для базы данных "<имя базы данных>" заполнен, так как "LOG_BACKUP".

После выполнения резервного копирования журнала появляется еще одно сообщение об ошибке 9002:

Ошибка: 9002, уровень важности: 17, состояние: 9. журнал транзакций для базы данных "<имя базы данных>" заполнен, так как "ACTIVE_TRANSACTION".

После другого резервного копирования журнала вы получите еще одно сообщение об ошибке 9002 и сообщение об ошибке 5901:

Ошибка: 9002, уровень важности: 17, состояние: 9. журнал транзакций для базы данных "<имя базы данных>" заполнен, так как "AVAILABILITY_REPLICA".

Не удалось записать запись контрольной точки в базу данных <имя базы данных> из-за недостаточного места в журнале. Обратитесь к администратору базы данных, чтобы усечь журнал или выделить место для файлов журнала базы данных. Ошибка: 5901, серьезность: 16, состояние: 1. один или несколько единиц восстановления, принадлежащих базе данных "<" имя базы данных> ", не удалось создать контрольную точку. Обычно это происходит из-за недостатка системных ресурсов, таких как диск или память, или в некоторых случаях вследствие повреждения базы данных. Подробные сведения об этом сбое рассматриваются в журнале ошибок.

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

Сообщение 3052, уровень 16, состояние 1, журнал 4BACKUP строки не смог записать обновления для базы данных "<имя базы данных>". Последующие резервные копии журналов потребуется перед тем, как вы перейдете точку резервного копирования с "<номер LSN ID 1>" в <номер lsn ID 2> "после того, как пространство для регистрации станет доступно для записи.

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

Решение

Эта проблема впервые устранена в следующем накопительном обновлении SQL Server:

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

Обходное решение

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

  1. Установите флажки для всех вторичных реплик, чтобы убедиться, что вторичная реплика last_hardened_lsn (см. sys.dm_hadr_database_replica_states) соответствует первичной реплике last_hardened_lsn. Это можно сделать, выполнив следующий запрос, который подключен к первичному экземпляру реплики.

    SELECT ags.name as AGGroupName,    ar.replica_server_name as InstanceName,    hars.role_desc,    db_name(drs.database_id)as DBName,    drs.last_hardened_lsn, drs.log_send_queue_size,    drs.synchronization_state_desc as SyncState,    ar.availability_mode_desc as SyncMode,    CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id    FROM sys.dm_hadr_database_replica_states drs    LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id    LEFT JOIN sys.availability_groups ags  ON ar.group_id = ags.group_id    LEFT JOIN sys.dm_hadr_availability_replica_states hars        ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id      WHERE db_name(drs.database_id) = '<database name>'
  2. На первичной реплике

    • Удалите базу данных из группы доступности.

    • Повторно добавьте базу данных в группу доступности.

  3. На каждой вторичной реплике

    • Повторно добавьте базу данных в группу доступности.

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

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

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

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

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

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

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

×