Итак, как вы описали поведение журнала - он уменьшает размер после сжатия - вы используете Простую модель восстановления вашей БД.
И в файле журнала не осталось ни одной копии удаленных данных
Если вы спросите - как восстановить эти данные - не существует никакого обычного способа.
Если вы спрашиваете о безопасности данных и беспокоитесь об удаленных данных, оставленных где-то в БД - да, есть - см. скрытые записи . И, очевидно, некоторые данные могут быть восстановлены сторонними инструментами из обоих типов файлов БД - data и log.
Журнал БД увеличивается в размере, потому что он содержит все данные, являющиеся удаляющими до тех пор, пока не завершится команда DELETE
, потому что в случае сбоя - сервер sql должен восстановить все частично удаленные данные из-за гарантии атомарности.
Дополнительные ответы:
- Нет, невозможно удалить данные без сохранения в файле журнала
- Поскольку уже загруженный файл журнала не сжимается автоматически. Чтобы уменьшить размер файлов в БД, вы должны выполнить некоторые операции сжатия , , которые строго не рекомендуются в производственной среде
- попробуйте удалить небольшими порциями, см. Пример
вместо удаления всех данных следующим образом:
DELETE FROM YourTable
удалить небольшими порциями:
WHILE 1 = 1
BEGIN
DELETE TOP (10000) FROM YourTable
IF @@ROWCOUNT = 0 BREAK
END