есть способ избавиться от предупреждения в Visual Studio 2010 Ultimate, не избавляясь от подсказки, но вы должны изменить подсказку, чтобы использовать index_id вместо имени индекса.
Это работало с примером таблицы, которая содержала 3 столбца пространственных данных с индексом в каждом.
Пространственные индексы были созданы в проекте базы данных в VS2010 Ultimate из представления схемы после перехода в папку индексов втаблица, щелкнув правой кнопкой мыши папку индексов и выбрав добавить пространственный индекс.
Индекс_идентификатора каждого пространственного индекса зависит от порядка, в котором пространственные индексы создаются для одной и той же таблицы, а не от порядка создания каких-либо других.indexes.
Порядок создания индекса между пространственными индексами зависит от порядка сверху вниз, в котором они появляются в папке индексов представления схемы, поэтому в основном алфавитно-цифровой порядок словаря.
Значения index_id дляпространственные индексы всегда начинаются с 384000 и увеличиваются на1 для каждого дополнительно созданного индекса, в том порядке, в котором он был создан.
Для примера с 3 пространственными индексами я создал такие имена, как:
- TABLEPREFIX_SPATIAL384000_COLUMNNAME1
- TABLEPREFIX_SPATIAL384001_COLUMNNAME2
- TABLEPREFIX_SPATIAL384002_COLUMNNAME3
При отбрасывании и повторном создании индексов также создается один и тот же index_id для каждого индекса.
Итак, тогда I *
с:
WITH(INDEX(384000))
Visual Studio скомпилирован без жалоб, и запрос выполнялся, как и предполагалось, с использованием правильной подсказки индекса.
CAVEAT: если вам нужно обновить существующую базу данных, выВам придется удалять / переименовывать, а не переименовывать, и вам придется делать это в правильном порядке.Это не очень хороший обходной путь, но он избавится от предупреждения
Я попробовал немного более привлекательный подход, используя переменную команды sql:
WITH(INDEX([$(my_geographic_index_name)]))
К сожалению, это также привело кнежелательное предупреждение.
Удачи.