Журнал транзакций для базы данных "databasename" заполнен.

Журнал транзакций для базы данных '' заполнен. Чтобы выяснить, почему пространство в журнале нельзя использовать повторно, см. Столбец log_reuse_wait_desc в sys.databases. Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

5 ответов

Несомненно, вы используете базу данных в Full Recovery Modeи не удалось создать резервные копии журнала транзакций.

Щелкните правой кнопкой мыши свою базу данных в SQL Server Manager и откройте страницу "Параметры". Переключить модель восстановления из Full в Simple затем снова щелкните правой кнопкой мыши базу данных. Выбрать TasksShrink, Files, Сократите файл журнала до нужного размера (я обычно придерживаюсь 20-25% размера файлов данных).

Вернитесь к Full Recovery Modelи сразу же сделайте полную резервную копию базы данных.

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

Если бизнес может пережить определенную потерю данных, запланируйте полное резервное копирование и переключитесь на Simple Режим.

Наиболее вероятный ответ: вам нужно запустить резервное копирование журнала или существует открытая транзакция.

Вот еще немного, чтобы помочь вам...

Запустите этот скрипт на вашем сервере:

-- last FULL backup
;with FULLBUs 
as (
    select d.name, max(b.backup_finish_date) as 'Last FULL Backup'
    from sys.databases d
        join msdb.dbo.backupset b
            on d.name = b.database_name
    where b.type = 'D'
    group by d.name
),

-- last LOG backup for FULL and BULK_LOGGED databases
LOGBUs
as (
    select d.name, max(b.backup_finish_date) as 'Last LOG Backup'
    from sys.databases d
        join msdb.dbo.backupset b
            on d.name = b.database_name
    where d.recovery_model_desc <> 'SIMPLE'
        and b.type = 'L'
    group by d.name
)

-- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG
select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup]
from sys.databases d
    left outer join FULLBUs f
        on d.name = f.name
    left outer join LOGBUs l
        on d.name = l.name
where d.name not in ('model', 'TempDB')
order by d.name

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

Посмотрите на столбец, помеченный log_reuse_wait_description. Скорее всего это говорит BACKUP. Следующая наиболее вероятная причина - СДЕЛКА.

Если это BACKUP, вот некоторая информация:

По сути, для ваших простых баз данных запускайте ПОЛНУЮ резервную копию каждый день. Для ваших полных баз данных запускайте полную резервную копию каждый день и резервную копию журнала каждый час. Отрегулируйте частоту ваших баз данных LOG, чтобы соответствовать вашей способности потерять данные при сохранении вашей работы.

Самый простой способ управления резервными копиями - использовать сценарии обслуживания Олы Хелленгрен. Посетите его сайт и попробуйте их использовать.

Если вы видите TRANSACTION в качестве причины, попробуйте выполнить:

dbcc opentran

И выследить, кто имеет открытые транзакции.

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

это не позволит вам выполнить какие-либо действия с этой базой данных, например сжатие, а ядро ​​базы данных SQL Server вызовет ошибку 9002.

Чтобы преодолеть это поведение, я советую вам проверить это. Журнал транзакций для базы данных "SharePoint_Config" заполнен из-за LOG_BACKUP, в котором показаны подробные шаги для решения этой проблемы, такие как план обслуживания резервного копирования журнала.

Сделайте это правой кнопкой мыши на узле базы данных -> Задачи-> Резервное копирование-> Общие (на вкладке)-> установите "Тип резервной копии" на "Журнал транзакций"-> ОК.

Щелкните правой кнопкой мыши базу данных \ Свойства \ Файлы.

У вас будет таблица с файлами базы данных, среди которых файл журнала. Просто увеличьте начальный размер до разумной суммы.

Другие вопросы по тегам