Раньше я думал, что удаляю гипотетические индексы, используя оператор DROP INDEX для кластеризованных индексов и оператор DROP STATISTICS для некластеризованных индексов.
У меня есть база данных, заполненная остатками DTA, которые я хотел бы очистить; однако, когда я пытаюсь отбросить объект, я всегда получаю сообщение об ошибке, говорящее мне, что я не могу отбросить объект «потому что он не существует или у вас нет разрешения». Я являюсь полным системным администратором на сервере, поэтому могу ожидать, что у меня есть права на все.
Я пробовал это с обоими операторами DROP STATS и DROP INDEX, но оба дают мне ту же ошибку.
Кто-нибудь удалял их раньше и есть ли хитрость, которую я пропускаю?
добавление
Оглядываясь на это, я просто заметил, что если я R-Click на объекте, опции «Script As» и «DELETE» будут недоступны.
DROP INDEX
правильный синтаксис для кластеризованных и некластеризованных индексов.DROP STATISTICS
специально для статистики, которые разные.Ответы:
Гипотетические индексы, созданные мастером настройки индекса, начинаются с имени «hind_%» и не должны существовать после завершения настройки; все они должны быть удалены. Вы можете запустить следующий скрипт из анализатора запросов SQL Server, чтобы удалить любые такие индексы, которые могут существовать. Вы должны войти в систему, используя учетную запись, которая имеет разрешения sysadmin или db_owner, или является владельцем объекта, для которого была создана эта статистика.
Например
Выше скрипт предоставлен Microsoft для более подробной информации вы можете перейти по следующей ссылке. http://support.microsoft.com/kb/q293177
источник
Книги в Интернете включают несколько причин, по которым вы не сможете удалить индекс.
Могут быть и другие причины.
источник
dbcc checktable
нужен?Это немного упрощенно, но если вы закончили с предложениями DTA, попробуйте удалить сеансы настройки с этого сервера через интерфейс DTA.
источник