Как удалить логи SQL Server 2008?

Рейтинг: 3Ответов: 1Опубликовано: 12.03.2011

До 2008 версии у SQL Server была команда Backup database [...] with truncate only. Но SQL Server 2008 пишет, что эта опция более не поддерживается.

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

Хорошо. При создании резервной копии делаю бэкап не всей базы, а только указанных файлов, логи пропускаю. Результат: базу из полученного бэкапа не восстановить.

Ладно. Пытаюсь тупо удалить лог. База перестаёт работать.

Ладно. Заменяю файл лога на пустой файл. База перестаёт работать.

Ладно. В настройках базы данных пытаюсь ограничить размер лога. Результат: как только лог достигает указанного размера, база перестаёт обрабатывать запросы на изменение данных.

В итоге что база, что бэкапы её весят гораздо больше, чем могли бы; нам эти логи не нужны. Я понимаю, что они нужны самому SQL Server'у для поддержки транзакционности, но зачем хранить все логи всех операций?

Я бы отказался от SQL Server 2008 и написал бы свой механизм для работы с FileStream (других возможностей этой версии мы не используем), но начальство не велит.

Ответы

▲ 4Принят

Для SQL Server до 2008 версии:

USE ИмяБазы
BACKUP LOG ИмяБазы WITH TRUNCATE_ONLY
DBCC SHRINKFILE( ИмяФайлаЛога,  ЖелаемыйРазмер )

С SQL Server 2008 этот метод не работает, поэтому следует использоват другую процедуру:

USE ИмяБазы
ALTER DATABASE ИмяБазы SET RECOVERY SIMPLE
DBCC SHRINKFILE (ИмяФайлаЛога, ЖелаемыйРазмер);
ALTER DATABASE ИмяБазы SET RECOVERY FULL