Почему я не могу сжать файл журнала транзакций даже после резервного копирования? - PullRequest
26 голосов
/ 23 апреля 2009

У меня есть база данных с 28-гигабайтным файлом журнала транзакций. Режим восстановления прост. Я просто сделал полную резервную копию базы данных, а затем запустил оба:

backup log dbmcms with truncate_only</p> <p>DBCC SHRINKFILE ('Wxlog0', TRUNCATEONLY)

Имя базы данных - db_mcms, а имя файла журнала транзакций - Wxlog0.

Ни то, ни другое не помогло. Я не уверен, что делать дальше.

Ответы [ 15 ]

0 голосов
/ 23 апреля 2009

Нельзя сжать журнал транзакций меньше его первоначально созданного размера.

0 голосов
/ 23 апреля 2009

Переведите БД в полный режим, запустите резервное копирование журнала транзакций (а не просто полное резервное копирование) и затем выполните сжатие.

После сокращения вы можете перевести БД в простой режим, и журнал txn останется прежним.

0 голосов
/ 23 апреля 2009

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

-- shrink log file to c. 1 GB
DBCC SHRINKFILE (Wxlog0, 1000);

Параметр TRUNCATEONLY не переставляет страницы внутри файла журнала, поэтому у вас может быть активная страница в конце файла, что может помешать ее усадке.

Вы также можете использовать DBCC SQLPERF (LOGSPACE), чтобы убедиться, что в файле журнала действительно есть место для освобождения.

0 голосов
/ 23 апреля 2009

Попробуйте использовать целевой размер, который вам нужен для TRUNCATEONLY в DBCC:

DBCC SHRINKFILE ('Wxlog0', 1)

И отметьте это в статьях:

http://msdn.microsoft.com/en-us/library/ms189493(SQL.90).aspx

http://support.microsoft.com/kb/907511

Edit:

Вы можете попытаться переместить выделенные страницы в начало файла журнала с помощью

DBCC SHRINKFILE ('Wxlog0', NOTRUNCATE)

и после этого

DBCC SHRINKFILE ('Wxlog0', 1)

0 голосов
/ 23 апреля 2009

Вы пробовали из среды управления SQL Server с графическим интерфейсом. Правый клик по базе данных, задачам, сжатию, файлам. Выберите тип файла = Журнал.

Я работал на меня неделю назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...