У меня есть база данных, [Моя БД], которая имеет следующую информацию:
SQL Server 2008
Размер МДФ: 30 ГБ
Размер LDF: 67 ГБ.
Я хотел как можно больше сжать файл журнала, и поэтому начал свой поиск, чтобы выяснить, как это сделать. Предостережение: я не являюсь администратором баз данных (или даже приближаюсь к администратору базы данных), и через этот квест проделывался прогресс.
Во-первых, я просто перешел в SSMS, свойства базы данных, файлы и отредактировал значение Initial Size (MB) до 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
Что говорит мне, что мне нужно сделать резервную копию файла журнала перед файлом shrink, чтобы файлы виртуального журнала были выпущены, и файл shrinkfile может выполнять свою работу - я не знаю, что это значит... Я просто перефразирую здесь:)
Итак, я решил, что попытаюсь создать резервную копию файла журнала, а затем сделать DBCC SHRINKFILE (и я изменил размер нового файла журнала на 12800, поскольку это был минимальный размер, указанный в выводе предыдущей команды DBCC SHRINKFILE)
BACKUP LOG [My DB] TO DISK = 'D:\SQLBackup\20110824-MyDB-Log.bak'
GO
DBCC SHRINKFILE (N'My DB_Log' , 12800)
GO
Результат был таким же, как и первый. Я могу получить только файл журнала до 62 ГБ.
Я не уверен, что я делаю неправильно, и что я должен попробовать дальше.