Respuestas:
Para cambiar el nombre de una tabla en SQL Server, use el sp_rename
comando:
exec sp_rename 'schema.old_table_name', 'new_table_name'
'NewName'
campo, de lo contrario su tabla podría terminar pareciendo algo así dbo.dbo.NewName
.
CREATE SYNONYM [schema].[synonymName] FOR [schema].[tableName]
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';
Cuando use sp_rename que funciona como en las respuestas anteriores, verifique también qué objetos se ven afectados después de cambiar el nombre, esa referencia a esa tabla, porque también necesita cambiarlos
Tomé un ejemplo de código para las dependencias de la tabla en el blog de Pinal Dave aquí
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 también deben actualizarse
O use algún complemento si puede, algunos de ellos tienen la función de cambiar el nombre del objeto, y todos dependen también de los objetos
Si intentas exec sp_rename
y recibe un error de 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 arreglarlo fue reescribirlo en:
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
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 estadísticas y tipos de datos
Esto es lo que uso:
EXEC sp_rename 'MyTable', 'MyTableNewName';
Nada funcionó a partir de lo propuesto aquí. Así que solo introduje los datos en una nueva tabla
SELECT *
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];
tal vez sea útil para alguien ...
En mi caso no reconocía 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.
Para cambiar el nombre de una tabla con un esquema diferente:
Ejemplo: cambie dbo.MyTable1 a wrk.MyTable2
EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'
ALTER SCHEMA wrk TRANSFER dbo.MyTable2
.
, úselo[]
alrededor del nombre de la tabla. (Lo sé, lo sé, pero pueden suceder puntos ...) Por ejemplo,sp_rename '[Stupid.name]', 'NewName'
o con un esquemasp_rename '[dbo.Stupid.name]', 'NewName'