Как сжать журнал транзакций в базе данных SQL Server в репликации - PullRequest
11 голосов
/ 06 августа 2009

Привет, у меня есть производственная база данных и база данных реплицированных отчетов. Как сжать файлы журнала транзакций в производственной базе данных при увеличении размера файла журнала. Я пробовал команды DBCC SHRINKFILE и SHRINKDATABASE , но у меня это не работает. Я не могу отсоединить и сжать и прикрепить обратно как БД в репликации. Пожалуйста, помогите мне в этом вопросе.

Ответы [ 5 ]

14 голосов
/ 08 июня 2013

Сначала проверьте, что не приводит к уменьшению вашей базы данных, запустив:

SELECT name, log_reuse_wait_desc FROM sys.DATABASES

Если вы заблокированы транзакцией, найдите ту, с которой:

DBCC OPENTRAN

Убейте транзакцию и сократите вашу базу данных.

Если причиной блокировки является «REPLICATION», и вы уверены, что ваши реплики синхронизированы, вам может потребоваться сбросить статус реплицированных транзакций. Чтобы увидеть состояние того, что база данных все еще считает нужной для репликации, используйте:

DBCC loginfo

Вы можете сбросить это, сначала отключив агент Reader (я обычно просто выключаю весь агент SQL Server), а затем выполните этот запрос к базе данных, для которой вы хотите исправить проблему репликации:

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time= 0, @reset = 1

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

1 голос
/ 06 августа 2009

База данных не позволит вам удалить данные транзакции, которые не были скопированы. Сначала необходимо создать резервную копию журнала транзакций, а затем уменьшить его.

0 голосов
/ 13 мая 2010

Я использовал средство резервного копирования SQL-100 от Red-Gate для обеспечения резервного копирования. Затем я просто использую консоль управления, чтобы выполнить команду сжатия файла журнала (указав, чтобы она переставляла страницы перед освобождением неиспользуемого пространства).

Работает как шарм.

0 голосов
/ 06 августа 2009

Сжатие файла журнала с помощью dbcc shrinkfile

Затем обрежьте файл журнала, используя

Резервное имя базы данных с truncate_only

Затем снова сожмите файл журнала

0 голосов
/ 06 августа 2009

Есть ли у вас регулярное расписание резервного копирования?

Если нет, я предлагаю вам прочитать эту замечательную статью: 8 шагов к улучшению пропускной способности журнала транзакций

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