Как отключить все индексы таблиц в компактной версии sql-сервера с помощью объекта SqlCeCommand?
-
05-09-2019 - |
Вопрос
Я пытаюсь выполнить огромную массовую вставку в базу данных SqlCe (версия 3.5, да и с использованием C# 3).Я пробовал различные способы сделать это (вставка адаптера таблицы, подготовленный параметризованный запрос, вставка sqlceresultset и т. д.).Как я читал на многих сайтах, самое быстрое время было при использовании объекта SqlCeResultSet в прямом режиме таблицы.
Я хочу еще больше ускорить этот процесс, отключив все индексы в необходимых таблицах перед вставкой (затем я их перестрою).У меня возникла проблема с работой оператора ALTER INDEX (никогда не использовал его раньше, поэтому я уверен, что упускаю из виду что-то простое).
По сути, я создал SqlCeCommandObject и настроил оператор изменения следующим образом (объект Connection уже настроен, открыт и т. д.):
.
.
.
SqlCeCommand disableIndexCommand = Connection.CreateCommand();
disableIndexCommand.CommandText = "ALTER INDEX ALL ON ItemMaster DISABLE";
disableIndexCommand.ExecuteNonQuery();
.
.
.
Когда я пытаюсь запустить этот код, я получаю следующую ошибку:
Произошла ошибка при анализе запроса.Номер линии токена = 1, токеновая линия смещения = 7, токен в ошибке = индекс
Мне кажется, что он не понимает ключевое слово INDEX в операторе alter.Разве это не поддерживается в SqlCe?
Спасибо
[ОБНОВЛЕНИЕ] - Я пробовал другие операторы DDL (например, DROP INDEX, CREATE INDEX), и мне кажется, что ни один из них не работает?Я искал повсюду, пытаясь найти список того, что поддерживается, а что не поддерживается в SSCE, что касается операторов DDL.Не повезло.Кто-нибудь знает хорошие ресурсы для этого.Должен сказать, документация MS по sqlce Compact версии 3.5 оказалась совершенно бесполезной...
Решение
Синтаксис DROP INDEX в SqlServerCe:
DROP INDEX [TableName].IndexName
В SqlServerCe нет синтаксиса ALTER INDEX, поэтому, когда он говорит «анализ ошибок» в «INDEX», это потому, что он ищет «TABLE», единственное, для чего ALTER действителен в SqlServerCe.
РЕДАКТИРОВАТЬ: Что касается документации, лучший способ, который я нашел, — это скачать Книги онлайн.Если вы не используете 3.5 SP1, то посмотрите здесь для получения более полного списка доступных загрузок.