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