До 2008 версии у SQL Server была команда Backup database [...] with truncate only. Но SQL Server 2008 пишет, что эта опция более не поддерживается. Хорошо. При восстановлении пытаюсь выбрать не все файлы для восстановления, а только некоторые. Но файл лога, который можно было бы исключить из списка восстанавливаемых файлов, в списке файлов для восстановления вообще не фигурирует. Хорошо. При создании резервной копии делаю бэкап не всей базы, а только указанных файлов, логи пропускаю. Результат: базу из полученного бэкапа не восстановить. Ладно. Пытаюсь тупо удалить лог. База перестаёт работать. Ладно. Заменяю файл лога на пустой файл. База перестаёт работать. Ладно. В настройках базы данных пытаюсь ограничить размер лога. Результат: как только лог достигает указанного размера, база перестаёт обрабатывать запросы на изменение данных. В итоге что база, что бэкапы её весят гораздо больше, чем могли бы; нам эти логи не нужны. Я понимаю, что они нужны самому SQL Server'у для поддержки транзакционности, но зачем хранить все логи всех операций? Я бы отказался от SQL Server 2008 и написал бы свой механизм для работы с FileStream (других возможностей этой версии мы не используем), но начальство не велит.
Ответ
Для 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
Комментариев нет:
Отправить комментарий