Как я могу решить "Либо параметр @objname неоднозначен, либо заявленный код @objtype (COLUMN) ошибочен".?
Если я попытаюсь выполнить следующий запрос:
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'
Я получаю сообщение об ошибке:
Либо параметр @objname равен неоднозначный или заявленный тип @objtype (COLUMN) неверно.
Как я могу его решить?
Ответы
Ответ 1
Гайки. Я ударил эту же ошибку несколько недель назад, и после того, как много потерянного времени выяснилось, как заставить ее работать, но я с тех пор забыл об этом. (Не много помощи, кроме как сказать "да", это можно сделать.)
Вы пробовали разные комбинации скобок или с и без брекетов? например.
EXEC sp_rename 'ENG_TEst.ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN';
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', '[ENG_Test_AC_TYPE]', 'COLUMN';
EXEC sp_rename '[ENG_TEst].ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN';
Если все остальное не работает, всегда
- Создать новую таблицу (как "xENG_TEst" ) с собственными именами
- Скопировать данные из старой таблицы
- Удалить старую таблицу
- Переименуйте новую таблицу в конечное имя
Ответ 2
Выполняется ли запрос в правильной базе данных? то есть.,
Use MyDatabase;
GO
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
GO
Ответ 3
Это работает
EXEC sp_rename
@objname = 'ENG_TEst."[ENG_Test_A/C_TYPE]"',
@newname = 'ENG_Test_A/C_TYPE',
@objtype = 'COLUMN'
Ответ 4
Я столкнулся с этим сегодня и получил его для работы с:
EXECUTE sp_rename N'dbo.table_name.original_field_name', N'new_field_name', 'COLUMN'
Чтобы получить этот синтаксис, я последовал совету Мартина Смита выше - откройте таблицу в представлении дизайна, переименуйте столбец, а затем щелкните конструктор таблиц | сгенерировать изменение script. Это создало script, ниже которого переименование выполняется в два этапа:
/* To prevent any potential data loss issues, you should review this script in
detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
EXECUTE sp_rename N'dbo.table_name.original_field_name', N'Tmp_new_field_name_1', COLUMN'
GO
EXECUTE sp_rename N'dbo.table_name.Tmp_new_field_name_1', N'new_field_name', 'COLUMN'
GO
ALTER TABLE dbo.table_name SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Ответ 5
У меня также была эта проблема - очень раздражающая и еще не нашла удовлетворительного sql-ответа (кроме длинных, связанных с созданием временных таблиц и т.д.), и у меня не было времени изучить его до конца. я 'd понравился.
В итоге просто использовал SQL Server Management Studio для этого, выбрав таблицу, щелкнув правой кнопкой мыши на столбце и нажав на переименование. Simples!
Очевидно, я предпочел бы знать, как это сделать без gui, но иногда вам просто нужно сделать sh ** done!
Ответ 6
Я получил эту ошибку при обновлении первой базы MVC5 кода. Удаление (щелчок правой кнопкой мыши, удаление) все таблицы из моей базы данных и удаление миграций из папки миграции работали для меня.
Ответ 7
Обе следующие работы (как обсуждалось здесь).
exec sp_rename 'ENG_TEst.[[ENG_Test_A/C_TYPE]]]' ,
'ENG_Test_A/C_TYPE', 'COLUMN'
exec sp_rename 'ENG_TEst."[ENG_Test_A/C_TYPE]"' ,
'ENG_Test_A/C_TYPE', 'COLUMN'
Ответ 8
Я пробовал все возможные решения на этом веб-сайте, и ничто не работало для меня. Я закончил работу в режиме дизайна. Щелкните правой кнопкой мыши на имени таблицы и выберите дизайн. Затем я изменил имя и сохранил его. Проработал просто.
Ответ 9
просто попробуйте удалить ИНДЕКСЫ СТАТИСТИКИ, связанные с этим COLUMN.
С наилучшими пожеланиями.