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'';