Проблема с переименованием столбца в SQL Server - PullRequest
4 голосов
/ 16 марта 2011

Итак, я пытался переименовать столбец в моей таблице с Conversion_Fee_PerShare до Conversion Fee.

Я посмотрел в Интернете и нашел синтаксис:

sp_RENAME 'TableName.[OldColumnName]', '[NewColumnName]', 'COLUMN'

Iнаписал мой запрос как:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee_Per_Share]' , '[Conversion_Fee]', 'COLUMN'

Имя столбца теперь стало [Conversion_Fee] вместо Conversion_Fee

Теперь, если я пытаюсь переименовать снова, как это:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee]' , 'Conversion_Fee', 'COLUMN'

Это дает мне сообщение об ошибке:

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

Я пытался изменить AllocationDetails столбца удаления таблицы. [Conversion_Fee] это тоже не сработало.

Какой правильный синтаксис?

Ответы [ 4 ]

7 голосов
/ 16 марта 2011
/*Initial Table*/  
CREATE TABLE AllocationDetails
  (
     Conversion_Fee_Per_Share FLOAT
  )

/*Faulty Rename*/  
EXEC sp_rename
  'dbo.AllocationDetails.[Conversion_Fee_Per_Share]',
  '[Conversion_Fee]',
  'COLUMN'

/*Fixed Rename*/  
EXEC sp_rename
  'dbo.AllocationDetails.[[Conversion_Fee]]]',
  'Conversion_Fee',
  'COLUMN'

DROP TABLE AllocationDetails 

Имя столбца для использования во втором вызове sp_rename - это то, что возвращается SELECT QUOTENAME('[Conversion_Fee_Per_Share]').

В качестве альтернативы и более прямо можно использовать

EXEC sp_rename
  'dbo.AllocationDetails."[Conversion_Fee]"',
  'Conversion_Fee',
  'COLUMN'

QUOTED_IDENTIFIER всегда включен для этой хранимой процедуры, поэтому это не зависит от того, включен ли он в настройках сеанса.

4 голосов
/ 16 марта 2011

Неважно, я узнал:

ALTER TABLE dbo.AllocationDetails
DROP COLUMN [[Conversion_Fee]]]

OR

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN'

это будет нормально работать. :)

Использование двойных кавычек:

exec sp_rename 'dbo.AllocationDetails."[Conversion_Fee]"' , 'Conversion_Fee', 'COLUMN' 

тоже будет работать.

3 голосов
/ 16 марта 2011

Чтобы это исправить:

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN'
0 голосов
/ 27 февраля 2017

Выполните следующие запросы вместе.

USE [DATABASE_NAME];

GO
EXEC sp_rename '[SCHEMA_NAME].[TABLE_NAME].OLD_COLUMN_NAME', 'NEW_COLUMN_NAME', 'COLUMN';
GO

Это решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...