DBCC SHRINKFILE не показывает ошибок, но не сжимает файл журнала - PullRequest
0 голосов
/ 22 октября 2018

У меня есть рабочая БД, восстановленная в среде разработки на SQL Server 2012. Я хотел сжать файл журнала, чтобы сэкономить место на жестком диске.Я просмотрел SO и другие ресурсы, но ни одно из предложений не помогло мне.

Я взял полную резервную копию БД и резервную копию журнала.Я установил режим восстановления на простой.Там нет зеркального отображения.Тем не менее команда DBCC SHRINKFILE не сжимает файл, но также не показывает никаких ошибок.Эта же команда отлично работает на других БД на том же сервере.Я также попытался щелкнуть правой кнопкой мыши -> задачи -> сжать -> файлы -> сжать файл до, и получил тот же результат, то есть без ошибок, но размер файла остается неизменным.Что еще можно попробовать?

1 Ответ

0 голосов
/ 22 октября 2018

Это может произойти, даже если вы выполнили соответствующие инструкции по установке базы данных в режим восстановления SIMPLE.Обычно это происходит потому, что виртуальный журнал все еще используется.

Если вы запустите:

DBCC LOGINFO;

Вы увидите, используются ли какие-либо виртуальные журналы (Status равно 2),При сжатии файлов пустые виртуальные журналы физически удаляются, начиная с конца файла, пока он не достигнет первого использованного состояния.Вот почему сжатие файла журнала транзакций иногда сокращает его до некоторой степени, но удаляет все свободные виртуальные журналы, которые вы можете ожидать.

Это может произойти, если все еще выполняются какие-либо активные транзакции, которые можно отладить, запросивsys.dm_tran_active_transactions.

...