Переименование индекса с квадратными скобками в имени - PullRequest
0 голосов
/ 11 декабря 2019

Я создал индекс с [] в его имени, поэтому, когда я смотрю на sys.indexes, я вижу его в буквальном смысле как [IX_ValidationCurationTimeStampUTC].

Когда я пытаюсь переименовать его с sp_rename, вот так:

EXEC sp_rename 'data.Ops_ValidationCuration.[IX_ValidationCurationTimeStampUTC]', 'IX_ValidationCurationTimeStampUTC', 'INDEX'

Я получаю сообщение об ошибке:

Сообщение 15248, Уровень 11, Состояние 1, Процедура sp_rename, Строка 326 [Строка запуска партии 20] Либо параметр @objname является неоднозначнымили заявленный @objtype (INDEX) неверен.

Если я попытаюсь без INDEX, я получу эту ошибку:

Сообщение 15225, Уровень 11, Состояние 1, Процедура sp_rename, Строка 436 [Batch Start Line 20] Нет элемента с именем 'data.Ops_ValidationCuration. [IX_ValidationCurationTimeStampUTC]' можно найти в текущей базе данных MyDB, учитывая, что @itemtype был введен как '(null)'.

Я бы предпочел не делать переименование вручную, поскольку оно находится на 60 разных базах данных.

Есть идеи о том, что я могу попробовать?

1 Ответ

4 голосов
/ 11 декабря 2019

Когда вы запускаете эту строку через QUOTENAME, она возвращает:

[[IX_ValidationCurationTimeStampUTC]]]

Это то, что вам нужно использовать!

EXEC sp_rename 'whatever.[[IX_ValidationCurationTimeStampUTC]]]', 'IX_ValidationCurationTimeStampUTC', 'INDEX'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...