У меня есть база данных [My DB], которая содержит следующую информацию:
SQL Server 2008
Размер MDF: 30 ГБ
Размер LDF: 67 ГБ
Я хотел максимально сжать файл журнала и поэтому начал поиски, как это сделать. Предостережение: я не являюсь администратором баз данных (и даже не приближаюсь к администратору баз данных) и постепенно продвигался в этом квесте.
Во-первых, я просто зашел в SSMS, свойства базы данных, файлы и изменил значение начального размера (МБ) на 10. Это уменьшило размер файла журнала до 62 ГБ (не совсем те 10 МБ, которые я ввел). Итак, я прикрепил SQL Profiler и увидел, что вызывается DBCC SHRINKFILE. Затем я ввел эту команду в редактор запросов, и вот результаты.
DBCC SHRINKFILE (N'My DB_Log' , 10)
И результат был:
Cannot shrink log file 2 (My DB_Log) because the logical log file located at the end of the file is in use.
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
8 2 8044104 12800 8044104 12800
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Затем я провел небольшое исследование и обнаружил следующее:
http://support.microsoft.com/kb / 907511
В нем говорится, что мне нужно сделать резервную копию файла журнала перед файлом сжатия, чтобы файлы виртуального журнала были освобождены, и файл сжатия мог выполнять свою работу - я не знаю, что это значит ... Я просто перефразируя здесь:)
Итак, я решил, что попытаюсь сделать резервную копию файла журнала, а затем выполнить DBCC SHRINKFILE (и я изменил размер нового файла журнала на 12800, поскольку это был MinimumSize, указанный в выходных данных предыдущей DBCC. SHRINKFILE command)
BACKUP LOG [My DB] TO DISK = 'D:\SQLBackup\20110824-MyDB-Log.bak'
GO
DBCC SHRINKFILE (N'My DB_Log' , 12800)
GO
Результат был таким же, как и при первом обходе. Я могу уменьшить размер файла журнала только до 62 ГБ.
Я не уверен, что делаю не так и что мне следует попробовать дальше.