RENAME (Transact-SQL)

Se aplica a: síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Cambia el nombre de una tabla creada por el usuario en Azure Synapse Analytics. Cambia el nombre de una tabla creada por el usuario, una columna de una tabla creada por el usuario o una base de datos en Sistema de la plataforma de análisis (PDW).

Nota

Para cambiar el nombre de una base de datos en Azure Synapse Analytics, use ALTER DATABASE (Azure Synapse Analytics). Para cambiar el nombre de una base de datos en Azure SQL Database, use la instrucción ALTER DATABASE (Azure SQL Database). Para cambiar el nombre de una base de datos en SQL Server, use el procedimiento almacenado sp_renamedb.

Nota

Actualmente no se admite el cambio de un grupo de SQL dedicado en Azure Synapse Analytics.

Sintaxis

-- Syntax for Azure Synapse Analytics

-- Rename a table.
RENAME OBJECT [::] [ [ database_name . [schema_name ] ] . ] | [schema_name . ] ] table_name TO new_table_name
[;]

-- Syntax for Analytics Platform System

-- Rename a table
RENAME OBJECT [::] [ [ database_name . [ schema_name ] . ] | [ schema_name . ] ] table_name TO new_table_name
[;]

-- Rename a database
RENAME DATABASE [::] database_name TO new_database_name
[;]

-- Rename a column 
RENAME OBJECT [::] [ [ database_name . [schema_name ] ] . ] | [schema_name . ] ] table_name COLUMN column_name TO new_column_name [;]

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Argumentos

RENAME OBJECT [::] [ [database_name . [ schema_name ] . ] | [ schema_name . ] ]table_name TO new_table_name APPLIES TO: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Sirve para cambiar el nombre de una tabla definida por el usuario. Especifique la tabla cuyo nombre va a cambiar por un nombre de una, dos o tres partes. Especifique la nueva tabla new_table_name como un nombre de una sola parte.

RENAME DATABASE [::] [ database_name TO new_database_name APPLIES TO: Sistema de la plataforma de análisis (PDW)

Sirve para cambiar el nombre de una base de datos definida por el usuario de database_name a new_database_name. No puede cambiar el nombre de una base de datos a ninguno de los siguientes nombres reservados de bases de datos de Sistema de la plataforma de análisis (PDW):

  • maestro
  • model
  • msdb
  • tempdb
  • pdwtempdb1
  • pdwtempdb2
  • DWConfiguration
  • DWDiagnostics
  • DWQueue

RENAME OBJECT [::] [ [database_name . [ schema_name ] . ] | [ schema_name . ] ]table_name COLUMN column_name TO new_column_name SE APLICA A: Sistema de la plataforma de análisis (PDW)

Cambie el nombre de una columna de una tabla.

Permisos

Para ejecutar este comando, necesita el permiso siguiente:

  • Permiso ALTER en la tabla.

Limitaciones y restricciones

No se puede cambiar el nombre de tablas externas, índices ni vistas

El nombre de tablas externas, índices o vistas no se puede cambiar. En lugar de cambiarlo, puede quitar la tabla externa, índice o vista en cuestión y, luego, volver a crearlo con el nuevo nombre.

No se puede cambiar el nombre de una tabla en uso

No se puede cambiar el nombre una tabla o una base de datos mientras estas están en uso. Cambiar el nombre de una tabla requiere un bloqueo exclusivo en dicha tabla. Si la tabla está en uso, puede que tenga que finalizar las sesiones que la estén usando. Para ello, puede usar el comando KILL. Use KILL con precaución, ya que cuando una sesión se finaliza, se revertirán todos los trabajos que no estén confirmados. Las sesiones en Azure Synapse Analytics tienen el prefijo "SID". Incluya "SID" y el número de sesión al invocar el comando KILL. En este ejemplo se muestra una lista de sesiones activas o inactivas y, luego, finaliza la sesión "SID1234".

Restricciones al cambiar el nombre de una columna

No se puede cambiar el nombre de una columna que se usa para la distribución de la tabla. Tampoco puede cambiar el nombre de las columnas de una tabla externa o de una tabla temporal.

Las vistas no se actualizan

Al cambiar el nombre de una base de datos, todas las vistas que usan el nombre de la base de datos anterior dejarán de ser válidas. Este comportamiento se produce con las vistas tanto dentro como fuera de la base de datos. Por ejemplo, si se cambia el nombre de la base de datos Sales, una vista que contenga SELECT * FROM Sales.dbo.table1 dejará de ser válida. Para resolver este problema, puede abstenerse de usar nombres de tres partes en las vistas, o bien actualizar las vistas para que hagan referencia al nombre de la nueva base de datos.

Al cambiar el nombre de una tabla, las vistas no se actualizan para que hagan referencia el nuevo nombre de tabla. Cada vista (ya sea dentro o fuera de la base de datos) que haga referencia al nombre de tabla anterior dejará de ser válida. Para resolver este problema, puede actualizar cada vista para que haga referencia al nombre de la nueva tabla.

Al cambiar el nombre de una columna, las vistas no se actualizan para que hagan referencia al nuevo nombre de columna. Las vistas seguirán mostrando el nombre de columna anterior hasta que se realice una modificación de la vista. En algunos casos, las vistas pueden dejar de ser válidas, por lo que es necesario quitarlas y volver a crearlas.

Bloqueo

Al cambiar el nombre de una tabla, se efectúa un bloqueo compartido en el objeto DATABASE, un bloqueo compartido en el objeto SCHEMA y un bloqueo exclusivo en la tabla.

Ejemplos

A. Cambiar el nombre de una base de datos

SE APLICA A: Sistema de la plataforma de análisis (PDW) solo

En este ejemplo se cambia el nombre de la base de datos definida por el usuario de AdWorks a AdWorks2.

-- Rename the user defined database AdWorks
RENAME DATABASE AdWorks to AdWorks2;

Al cambiar el nombre de una tabla, se actualizan todos los objetos y propiedades asociados a esa tabla para que hagan referencia al nombre de la nueva tabla. Así, por ejemplo, se actualizan las definiciones, índices, restricciones y permisos de la de tabla. Las vistas no se actualizan.

B. Cambiar de nombre una tabla

SE APLICA A: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW).

En este ejemplo se cambia el nombre de la tabla Customer a Customer1.

-- Rename the customer table
RENAME OBJECT Customer TO Customer1;

RENAME OBJECT mydb.dbo.Customer TO Customer1;

Al cambiar el nombre de una tabla, se actualizan todos los objetos y propiedades asociados a esa tabla para que hagan referencia al nombre de la nueva tabla. Así, por ejemplo, se actualizan las definiciones, índices, restricciones y permisos de la de tabla. Las vistas no se actualizan.

C. Mover una tabla a otro esquema

SE APLICA A: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW).

Si trata de mover el objeto a otro esquema, use ALTER SCHEMA. Por ejemplo, con la siguiente instrucción se mueve el elemento de tabla desde el esquema product al esquema dbo.

ALTER SCHEMA dbo TRANSFER OBJECT::product.item;

D. Terminar las sesiones antes de cambiar el nombre de una tabla

SE APLICA A: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW).

No se puede cambiar el nombre de una tabla mientras está en uso. Cambiar el nombre de una tabla requiere un bloqueo exclusivo en dicha tabla. Si la tabla está en uso, puede que tenga que finalizar la sesión que la esté usando. Para ello, puede usar el comando KILL. Use KILL con precaución, ya que cuando una sesión se finaliza, se revertirán todos los trabajos que no estén confirmados. Las sesiones en Azure Synapse Analytics tienen el prefijo "SID". Cuando invoque el comando KILL, deberá incluir "SID", así como el número de la sesión. En este ejemplo se muestra una lista de sesiones activas o inactivas y, luego, finaliza la sesión "SID1234".

-- View a list of the current sessions
SELECT session_id, login_name, status
FROM sys.dm_pdw_exec_sessions
WHERE status='Active' OR status='Idle';

-- Terminate a session using the session_id.
KILL 'SID1234';

E. Cambio del nombre de una columna

SE APLICA A: Sistema de la plataforma de análisis (PDW)

En este ejemplo se cambia el nombre de la columna FName de la tabla Customer a FirstName.

-- Rename the Fname column of the customer table
RENAME OBJECT::Customer COLUMN FName TO FirstName;

RENAME OBJECT mydb.dbo.Customer COLUMN FName TO FirstName;