La SQL consulta que he utilizado es :

ALTER TABLE oldtable RENAME TO newtable;

Pero, me da un error.

Servidor: Msg 156, Nivel 15, Estado 1, Línea 1

Sintaxis incorrecta cerca de la palabra clave ‘A’.

InformationsquelleAutor Switch | 2011-03-17

8 Comentarios

  1. 652

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

    exec sp_rename 'schema.old_table_name', 'new_table_name'
    • Una cosa más: si alguno de los nombres de la tabla tiene un . en ellos, el uso de [] alrededor del nombre de la tabla. (Yo sé, yo sé, pero los puntos que puede suceder…) E. g. sp_rename '[Stupid.name]', 'NewName' o con esquema sp_rename '[dbo.Stupid.name]', 'NewName'
    • Y para agregar, no accidentalmente poner el esquema en el 'NewName' campo, de lo contrario, la tabla podría terminar convirtiéndose en algo así como dbo.dbo.NewName.
    • Tenga en cuenta que al cambiar el nombre de una tabla, es casi seguro que quieres como cambiar el nombre de cualquier referencia a una tabla que puede existir en los procedimientos almacenados, vistas, funciones, etc. Una rápida en google puede encontrar una de las muchas herramientas que puede hacer esto para usted. O puede utilizar una secuencia de comandos que busca una cadena de caracteres en todos estos objetos, y pegarlos como ALTER declaraciones, y hacer un buscar y reemplazar, a continuación, ejecute todos ellos.
    • si es mi caso? Yo simplemente no puede hacer [dbo].[dbo]....
    • También puede crear un sinónimo nombrado después de que el antiguo nombre de la tabla que apunta a la nueva tabla CREATE SYNONYM [schema].[synonymName] FOR [schema].[tableName]
  2. 135

    Para cambiar el nombre de una columna:

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

    Para cambiar el nombre de una tabla:

    sp_rename 'old_table_name','new_table_name';
    • No explica cómo manejar los esquemas distinto del predeterminado dbo.
    • No lo es menos que cualquier otra respuesta aquí? Se busca cómo cambiar un esquema de tabla?
  3. 14

    Cuando se utiliza sp_rename que funciona como en anteriores respuestas, verifique también que los objetos se ven afectadas después de cambiar el nombre, que hacen referencia a esa tabla, ya que es necesario cambiar los

    Tomé un código de ejemplo para la tabla de dependencias en Pinal de Dave blog 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'

    Así, todos estos objetos dependientes necesita ser actualizado también

    O utilizar algún complemento si se puede, algunos de ellos tienen la característica de cambiar el nombre del objeto, y todos dependen,ent objetos demasiado

  4. 9

    Si intenta exec sp_rename y receieve un LockMatchID error, entonces puede ayudar a agregar un uso [base de datos] declaración de la primera:

    Traté de

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

    Lo que tenía que hacer era volver a escribir a:

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

    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 la estática y tipos de datos

  6. 0

    Nada funcionó a partir de aquí se propone ..
    Tan sólo interesó a los datos en una nueva tabla

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

    tal vez sea de utilidad para alguien..

    En mi caso es no reconocer el nuevo esquema también la dbo fue el dueño..

    ACTUALIZACIÓN

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

    Trabajó para mí.
    He encontrado que a partir de la secuencia de comandos generada automáticamente cuando se actualiza el PK de uno de los cuadros.
    De esta manera se reconoció el nuevo esquema así..

  7. 0

    Para cambiar el nombre de una tabla con un esquema diferente:

    Ejemplo: Cambio de dbo.MyTable1 wrk.MyTable2

    EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'
    
    ALTER SCHEMA wrk TRANSFER dbo.MyTable2

Dejar respuesta

Please enter your comment!
Please enter your name here