Я пытаюсь создать отфильтрованный некластеризованный индекс. В графическом интерфейсе я щелкаю правой кнопкой мыши папку Indexes
таблицы, где мне нужен индекс. Добавьте столбец, к которому следует применить индекс, затем щелкните страницу фильтра, чтобы добавить это утверждение: WHERE eMail IS NOT NULL
. Нажмите OK, и мне будет представлена эта ошибка:
Не удалось создать индекс fix_Email. (Microsoft.SqlServer.Smo)
Неверный синтаксис рядом с ключевым словом "ГДЕ".
Неправильный синтаксис рядом с ключевым словом "с". Если этот оператор является обычным табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой. (Microsoft SQL Server, ошибка: 156)
Это взято прямо из книги по администрированию SQL Server 2008. Я установил SQL 2012 Express, чтобы посмотреть, какие различия будут между ними. Все предыдущие примеры работали, создавая кластеризованные индексы, некластеризованные и покрывающие индексы. Это проблема с книгой или SQL Server 2012 или, может быть, с выпуском Express? Я попытался поставить точку с запятой, как было предложено в сообщении об ошибке, в конце моего статуса WHERE
, но это ничего не дало.
Мне удалось создать индекс, используя этот код в окне запроса:
CREATE NONCLUSTERED INDEX fix_Prices
ON dbo.Customers (eMail)
WHERE eMail IS NOT NULL;
почему это работает, но не использует графический интерфейс Management Studio?