
прошу помощи в решении проблемы, с которой я сейчас столкнулся: один из моих SQL-серверов не освобождает место после удаления строк.
Я использую SQL Server 2008 Enterprise x64 с SP1 CU4 (10.0.2734) и имею конфигурацию одноранговой репликации из четырех узлов.
Я вижу большое количество записей, готовых к использованию задачей очистки призраков через sys.dm_db_index_physical_stats (ghost_record_count), однако эти числа не уменьшаются.
Странно, но я сталкиваюсь с этой проблемой только на одном из серверов в конфигурации одноранговой сети из четырех узлов, то есть остальные три узла успешно очищают удаленные строки, а их соответствующие ghost_record_counts в конечном итоге уменьшаются до нуля. Узел, на котором возникла эта проблема, был основным/начальным узлом, который использовался для восстановления/настройки других узлов в топологии одноранговой репликации.
Я пробовал и реорганизовать, и перестроить затронутые индексы, однако это не изменило цифры ghost_record_count после завершения. Полная проверка CHECKDB также не приводит к проблемам с ошибками/согласованностью.
Помощь? :)
решение1
Перезагрузил проблемный сервер, и проблема решилась сама собой — задача ghost-cleanup очистила строки ghost_record_count на следующий день :) Свободное место в базе данных значительно увеличилось.
Я бы не сказал, что решение проблемы само по себе после перезагрузки сильно повышает мою уверенность, поскольку я не знаю, что привело к проблеме; нужно будет следить за ghost_record_count в моих ежедневных проверках работоспособности.