#sql #database #sql-server-2005 #database-schema #indexing
#sql #База данных #sql-server-2005 #база данных-схема #индексирование
Вопрос:
Я вошел в систему как ‘sa’ с полными правами администратора и выполняю следующую команду:
CREATE NONCLUSTERED INDEX [IDX_EntityAuditId] ON [Maintenance.EntityAuditMessagesArchive]
([EntityAuditId] ASC) ON [PRIMARY]
и получение ошибки:
Не удается найти объект «Обслуживание.EntityAuditMessagesArchive » потому что он не существует или у вас нет разрешений.
Объект действительно существует, потому что я могу выбирать из него. Кроме того, команда работает, если таблица не находится в схеме. т.е.
CREATE NONCLUSTERED INDEX [IDX_EntityAuditId] ON [EntityAuditMessagesArchive]
([EntityAuditId] ASC) ON [PRIMARY]
работает (когда я создаю таблицу без схемы, конечно).
Итак, я не могу создать индекс, когда таблица находится в схеме обслуживания. Почему это?
Ответ №1:
В вашем имени есть .
. Я предполагаю, что вам нужно изменить его на:
[Maintenance].[EntityAuditMessagesArchive]
Точка внутри скобок указывает, что это часть имени, а не разделитель.
Комментарии:
1. Другими словами — вы абсолютно правы. Спасибо за вашу помощь!
2. @brundlefly — рад помочь. Я сам делал это несколько раз, когда вы изменяли сценарии, сгенерированные SSMS, и помещали скобки в неправильные места (или вставляли материал в скобки, сгенерированные SSMS).