Страницы

Поиск по вопросам

пятница, 20 марта 2020 г.

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

#sql


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


Ответы

Ответ 1



Для 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

Ответ 2



Попробуйте сначала так BACKUP LOG my_base1 WITH TRUNCATE_ONLY а потом так DBCC SHRINKDATABASE (my_base1,TRUNCATEONLY) но не уверен, с 2008 не работал.

Комментариев нет:

Отправить комментарий