ПЛОХО!

я есть база данных, [Моя БД], которая имеет следующую информацию:
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 ГБ.

Я не уверен, что я делаю неправильно и что я должен попробовать дальше.

Ответы на вопрос(8)

Ваш ответ на вопрос