Mudar o nome da coluna SQL Server 2008

estou a usar o servidor SQL 2008 e o Navicat. Preciso de mudar o nome de uma coluna numa tabela usando SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Esta declaração não funciona.

Author: Luke Girvin, 2013-04-30

12 answers

Uso sp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

Ver: servidor SQL-como mudar o nome de uma coluna ou nome de uma tabela

Documentação: sp_rename (Transact-SQL)

Para o seu caso seria:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

Lembre-se de usar aspas únicas para incluir os seus valores.

 1258
Author: Habib, 2017-07-29 06:57:17

Em alternativa a SQL, pode fazer isto no Estúdio de gestão de servidores SQL da Microsoft. Aqui estão algumas maneiras rápidas de usar a GUI:

Primeira Via

Duplo-click Lento na coluna. O nome da coluna tornar-se-á num campo de texto editável.


Segunda Via

Carregue com o botão direito na coluna e escolha mudar o nome no menu de contexto.

Por exemplo:

To Rename column name


Terceira Via

Esta forma é preferível para quando você precisa mudar o nome de várias colunas de uma vez.

  1. carregue com o botão direito na tabela que contém a coluna que necessita de mudar o nome.
  2. Clique Em Design .
  3. no painel de desenho da tabela, carregue e edite a caixa de texto do nome da coluna que deseja alterar.

Por exemplo: MSSMS Table Design Example

nota: eu sei que o OP pediu especificamente uma solução SQL, pensei que isto pudesse ajudar outros :)

 114
Author: Carrie Kendall, 2020-06-20 09:12:55

Tenta:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
 60
Author: TechDo, 2013-04-30 09:39:08

Você também deve especificar o esquema da tabela ou você pode obter este erro:

Msg 15248, nível 11, estado 1, procedimento sp_rename, linha 238 o parâmetro @objname é ambíguo ou o alegado @objtype (coluna) é errado.

Se for um programa de implantação, também recomendo que lhe adicione alguma segurança adicional.
IF EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'OldColumnName' AND
            object_name(object_id) = 'TableName'
    ) AND
    NOT EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'NewColumnName' AND
            object_name(object_id) = 'TableName'
    )
    EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
 30
Author: Taher, 2019-08-28 03:06:40

Seria uma boa sugestão usar uma função já incorporada, mas outra forma de contornar é:

  1. crie uma nova coluna com o mesmo tipo de dados e novo nome.
  2. Execute uma instrução de actualização/inserção para copiar todos os dados para uma nova coluna.
  3. larga a coluna antiga.

O benefício por trás do uso do {[[0]} é que ele cuida de todas as relações associadas a ele.

Da documentação :

Sp_ nome automaticamente muda o nome do índice associado sempre que uma chave primária ou restrição única é renomeada. Se um índice renomeado Está ligado a uma restrição de chave primária, a restrição de chave primária também é automaticamente renomeada por sp_rename. sp_rename pode ser usado para renomear índices XML primários e secundários.

 20
Author: NeverHopeless, 2017-06-30 11:27:37

Pode usar sp_rename mudar o nome de uma coluna.

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

, O primeiro parâmetro é o objeto a ser modificado, o segundo parâmetro é o novo nome que vai ser dado o objeto, e o terceiro parâmetro COLUNA informa o servidor que mudar o nome é por column, e pode também ser usado para mudar o nome tables, index e alias data type.

 17
Author: Alexandre Neukirchen, 2017-06-20 13:22:27
Como venho aqui muitas vezes e pergunto-me como usar os parêntesis, esta resposta pode ser útil para aqueles como eu.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • O OldColumnName não deve estar em []. Não vai funcionar.
  • não coloque NewColumnName em [], irá resultar em [[NewColumnName]].
 15
Author: HonzaB, 2017-08-25 07:00:10

O Sql Server management studio tem alguns procedimentos armazenados definidos pelo sistema (SP)
Um dos quais é usado para mudar o nome de uma coluna.O SP é o sp_ nome

Sintaxe: sp_rename '[table_name].old_column_name','new_column_name'
Para mais informações, consulte este artigo: sp_rename by Microsoft Docs

Nota: na execução deste SP, o servidor sql dar-lhe-á uma mensagem de precaução como 'cuidado: alterar qualquer parte de um o nome do objecto poderá quebrar os programas e os procedimentos armazenados '.Isto é crítico somente se você escreveu seu próprio sp que envolve a coluna na tabela que você está prestes a mudar.

 4
Author: Tahir77667, 2018-05-08 13:28:41

Versão Melhorada de @Taher

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)

SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName

IF EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
 3
Author: Rikin Patel, 2018-07-10 07:35:14
No meu caso, estava a usar a bancada do MySQL e ...
ALTER TABLE table_name RENAME COLUMN old_name new_name varchar(50) not null; 
// without TO and specify data type of that column 

Foi o suficiente para mudar o nome da coluna!

 1
Author: Rustamjon Kirgizbaev, 2020-11-22 16:06:17

Ou podias apenas clicar duas vezes na coluna do estúdio de gestão SQL e renomeá-la através da IU...

 0
Author: Dave Cole, 2018-09-13 18:10:51

Executar A Pesquisa:

    SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'
 0
Author: Purnima Bhatia, 2020-01-31 05:47:15