У меня есть база данных в SQL Server 2008 на жестком диске 1 ТБ, и она заполнила диск, свободно только 4 КБ. Размер файла MDF составляет 323 ГБ, а LDF - 653 ГБ. На жестком диске, на котором находится эта БД, нет других файлов, кроме MDF и LDF, поэтому невозможно освободить место на диске. Основной жесткий диск меньше, но на нем достаточно места для переноса MDF на этот диск, если это поможет. Этот сервер находится за границей на сайте клиента, и в настоящее время невозможно добавить больше дискового пространства на сервере. Также невозможно удалить какие-либо записи, потому что БД находится в неисправном режиме (из-за отсутствия места на диске) и не отвечает на большинство команд. База данных в настоящее время находится в режиме полного восстановления, поэтому файл LDF такой большой. Эта БД действительно не нуждается в полном восстановлении, поэтому в дальнейшем мы планируем переключить ее в простой режим, который сэкономит нам много места. Меня тоже не волнует потеря файла LDF, но мне нужны все данные. Я потратил много времени на поиски выхода из этой проблемы, но все, что я нашел вначале, включает либо освобождение дискового пространства, либо добавление дискового пространства, ни то, ни другое в настоящее время не является вариантом. Я застрял, и любая помощь будет принята с благодарностью.
Я получаю следующий журнал при попытке переключить БД в онлайн-режим.
Msg 945, уровень 14, состояние 2, строка 3 База данных «DBNAME» не может быть открыта из-за недоступных> файлов, недостаточной памяти или места на диске. См. Подробности в журнале ошибок SQL Server. Msg> 5069, уровень 16, состояние 1, строка 3 Оператор ALTER DATABASE завершился неудачно. Msg 1101, уровень 17, состояние 12, строка 3 Не удалось выделить новую страницу для базы данных «DBNAME» из-за недостаточного дискового> места в файловой группе «DEFAULT». Создайте необходимое пространство, отбросив> объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автоматический рост> для существующих файлов в файловой группе.
Я нашел следующие решения, но ни одно из них не работает из-за отсутствия дискового пространства на этом диске, а поскольку БД находится в неисправном состоянии, я не могу выполнить большинство команд. - DBCC SHRINKFILE - не может быть запущен, потому что выполнить «использовать DBNAME» не удается - Отсоединение БД и последующее изменение местоположения файлов MDF / LDF, это не удается, потому что БД находится в автономном режиме, поэтому вы не можете запустить отсоединение .
Я не понимаю, что еще попробовать.
Спасибо.
Это потому что ты не делать резервные копии. Ваши файлы журнала (.LDF) очищаются, когда вы делаете резервную копию базы данных. Вы можете сделать настоящую резервную копию и сжать журналы, или вы можете использовать простой режим восстановления и сжатие файлов базы данных обмануть SQL Server в мышление что вы сделали правильную резервную копию, но все, что она сделает, это освободит место. Это не позволит вам воспроизвести журналы транзакций и выполнить откат. Убедитесь, что вы понимаете последствия, прежде чем делать это.
Конечно, это может не сработать, учитывая ваше крайний проблема с дисковым пространством, поэтому вам может потребоваться сначала расширить диск (что, по вашему мнению, может быть непросто), прежде чем любая из этих команд сможет работать.
Если дисковый том использует единицы распределения NTFS 4K, вы можете остановить экземпляр, сжать файлы базы данных (сначала сделать наименьшие), а затем перезапустить экземпляр и перевести базу данных в оперативный режим.
Другой вариант - добавить пространство на сервер с помощью iSCSI, а затем смонтировать том под существующим. Это долгий путь, но на него стоит обратить внимание.