Cambiar el nombre de la columna SQL Server 2008

Resuelto Serhio g. Lazin asked hace 11 años • 11 respuestas

Estoy usando SQL Server 2008 y Navicat. Necesito cambiar el nombre de una columna en una tabla usando SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Esta afirmación no funciona.

Serhio g. Lazin avatar Apr 30 '13 16:04 Serhio g. Lazin
Aceptado

Usarsp_rename

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

Ver: SERVIDOR SQL: cómo cambiar el nombre de un nombre de columna o de tabla

Documentación: sp_rename (Transact-SQL)

Para tu caso sería:

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

Recuerde utilizar comillas simples para encerrar sus valores.

Habib avatar Apr 30 '2013 09:04 Habib

Como alternativa SQL, puede hacer esto en Microsoft SQL Server Management Studio. A continuación se muestran algunas formas rápidas de utilizar la GUI:

Primera Vía

Haga doble clic lento en la columna. El nombre de la columna se convertirá en un cuadro de texto editable.


Segunda Vía

Haga clic derecho en la columna y elija Cambiar nombre en el menú contextual.

Por ejemplo:

Para cambiar el nombre de la columna


Tercera Vía

Esta forma es preferible cuando necesita cambiar el nombre de varias columnas de una sola vez.

  1. Haga clic derecho en la tabla que contiene la columna cuyo nombre necesita cambiarse.
  2. Haga clic en Diseño .
  3. En el panel de diseño de la tabla, haga clic y edite el cuadro de texto del nombre de la columna que desea modificar.

Por ejemplo: Ejemplo de diseño de tabla MSSMS

NOTA: Sé que OP solicitó específicamente una solución SQL, pensé que esto podría ayudar a otros :)

Carrie Kendall avatar Feb 06 '2014 16:02 Carrie Kendall

Intentar:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
TechDo avatar Apr 30 '2013 09:04 TechDo

También debe especificar el esquema de la tabla o podría recibir este error:

Mensaje 15248, nivel 11, estado 1, procedimiento sp_rename, línea 238 El parámetro @objname es ambiguo o el @objtype (COLUMNA) reclamado es incorrecto.

Si se trata de un script de implementación, también recomendaría agregarle seguridad 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';
Taher avatar Nov 19 '2015 13:11 Taher

Como vengo aquí a menudo y luego me pregunto cómo usar los corchetes, esta respuesta podría ser útil para personas como yo.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • El OldColumnNameno debe estar dentro []. No funcionará.
  • No NewColumnNamelo pongas [], resultará en [[NewColumnName]].
HonzaB avatar Aug 25 '2017 07:08 HonzaB