Невозможно удалить индекс из-за полного журнала транзакций в SQL Server - PullRequest
0 голосов
/ 06 июля 2018

Когда я пытаюсь удалить индекс с помощью следующей команды:

DROP INDEX [ClusteredColumnStoreIndex-20180619-104559] ON [dbo].[Transactions]

Я получаю эту ошибку:

Сообщение 9002, Уровень 17, Состояние 4, Строка 4
Журнал транзакций для базы данных «Метрики» заполнен из-за «ACTIVE_TRANSACTION».

На этом диске, на котором находится база данных, также не хватает места.

Может кто-нибудь помочь мне удалить этот индекс?

1 Ответ

0 голосов
/ 06 июля 2018

используйте ниже techiniques

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

2) Рассмотрите возможность установки опции SORT_IN_TEMPDB в положение ON для операции индексирования. Это отделяет индексные транзакции от параллельных пользовательских транзакций. Индексные транзакции будут храниться в журнале транзакций tempdb, а параллельные пользовательские транзакции будут храниться в журнале транзакций базы данных пользователей. Это позволяет обрезать журнал транзакций пользовательской базы данных во время операции индекса, если это требуется. Кроме того, если журнал tempdb не находится на том же диске, что и журнал базы данных пользователей, два журнала не конкурируют за одно и то же дисковое пространство.

Примечание

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

3) Используйте модель восстановления базы данных, которая позволяет минимально регистрировать операции индекса. Это может уменьшить размер журнала и помешать журналу заполнить пространство журнала.

4) Не запускать операцию онлайн-индексации в явной транзакции. Журнал не будет усечен до завершения явной транзакции.

...