variable una tabla nombre modificar columna cambiar cabecera sql-server rename alter-table

sql-server - una - modificar columna sql server



¿Cómo cambiar el nombre de una tabla en SQL Server? (6)

La consulta SQL que he usado es:

ALTER TABLE oldtable RENAME TO newtable;

Pero, me da un error.

Servidor: Mensaje 156, Nivel 15, Estado 1, Línea 1
Sintaxis incorrecta cerca de la palabra clave ''TO''.


Cuando use sp_rename, que funciona como en las respuestas anteriores, verifique también qué objetos se ven afectados después del cambio de nombre, que hacen referencia a esa tabla, porque necesita cambiarlos también

Tomé un ejemplo de código para dependencias de mesa en el blog de Pinal Dave here

USE AdventureWorks GO SELECT referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID), referencing_object_name = o.name, referencing_object_type_desc = o.type_desc, referenced_schema_name, referenced_object_name = referenced_entity_name, referenced_object_type_desc = o1.type_desc, referenced_server_name, referenced_database_name --,sed.* -- Uncomment for all the columns FROM sys.sql_expression_dependencies sed INNER JOIN sys.objects o ON sed.referencing_id = o.[object_id] LEFT OUTER JOIN sys.objects o1 ON sed.referenced_id = o1.[object_id] WHERE referenced_entity_name = ''Customer''

Por lo tanto, todos estos objetos dependientes deben actualizarse también

O use algún complemento si puede, algunos de ellos tienen una función para cambiar el nombre del objeto, y todos dependen, también de los objetos.


Nada funcionó a partir de lo propuesto aquí. Así que simplemente vimos los datos en una nueva tabla.

SELECT * INTO [acecodetable].[''PSCLineReason''] FROM [acecodetable].[''15_PSCLineReason''];

tal vez sea útil para alguien ..

En mi caso no reconoció el nuevo esquema, también el dbo era el propietario.

ACTUALIZAR

EXECUTE sp_rename N''[acecodetable].[''''TradeAgreementClaim'''']'', N''TradeAgreementClaim'';

Trabajó para mi. Lo encontré en el script generado automáticamente al actualizar el PK para una de las tablas. De esta manera también reconoció el nuevo esquema.


Nombre de la tabla

sp_rename "db_name.old_table_name", "new_table_name"

Columna

sp_rename "db_name.old_table_name.name", "userName", "COLUMN"

Índice

sp_rename "db_name.old_table_name.id", "product_ID", "INDEX"

También disponible para estáticas y tipos de datos.


Para cambiar el nombre de una tabla en SQL Server, use el comando sp_rename :

exec sp_rename ''schema.old_table_name'', ''new_table_name''


Para renombrar una columna:

sp_rename ''table_name.old_column_name'', ''new_column_name'' , ''COLUMN'';

Para renombrar una tabla:

sp_rename ''old_table_name'',''new_table_name'';


Si prueba exec sp_rename y recibe un error LockMatchID, entonces podría ser útil agregar primero una declaración de uso [base de datos]:

Lo intenté

exec sp_rename ''[database_name].[dbo].[table_name]'', ''new_table_name''; -- Invalid EXECUTE statement using object "Object", method "LockMatchID".

Lo que tuve que hacer para solucionarlo fue volver a escribirlo en:

use database_name exec sp_rename ''[dbo].[table_name]'', ''new_table_name'';