RENAME (Transact-SQL)
S’applique à: Azure Synapse Analytics Analytics Platform System (PDW)
Renomme une table créée par l’utilisateur dans Azure Synapse Analytics. Renomme une table créée par l’utilisateur, une colonne dans une table ou une base de données créée par l’utilisateur dans Analytics Platform System (PDW).
Cet article s’applique à Azure Synapse Analytics et Analytics Platform System (PDW) uniquement :
- Pour renommer une base de données dans SQL Server, utilisez la procédure stockée sp_renamedb.
- Pour renommer une base de données dans Azure SQL Database, utilisez l’instruction ALTER DATABASE (Azure SQL Database).
- Le renommage de pools SQL dédiés autonomes (anciennement SQL DW) est pris en charge. La modification du nom d’un pool SQL dédié dans les espaces de travail Azure Synapse Analytics n’est pas prise en charge actuellement.
- Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
Syntaxe
-- 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 (PDW)
-- 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 [;]
Arguments
RENAME OBJECT [::] [ [database_name . [ schema_name ] . ] | [ schema_name . ] ] table_name TO new_table_name
S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)
Modifiez le nom d’une table définie par l’utilisateur. Spécifiez la table à renommer avec un nom en une, deux ou trois parties. Spécifiez la nouvelle table new_table_name avec un nom en une partie.
RENAME DATABASE [::] [ database_name TO new_database_name
S’applique à : Analytics Platform System (PDW)
Modifiez le nom d’une base de données définie par l’utilisateur, de database_name à new_database_name. Vous ne pouvez pas renommer une base de données avec les noms de base de données réservés Analytics Platform System (PDW) suivants :
master
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
S’applique à : Analytics Platform System (PDW)
Changez le nom d’une colonne dans une table.
Autorisations
Pour exécuter cette commande, vous avez besoin de cette autorisation :
- Autorisation ALTER au niveau de la table
Limitations et restrictions
Impossible de renommer une table externe, des index ou des vues
Vous ne pouvez pas renommer une table externe, des index ou des vues. Au lieu de renommer une table externe, un index ou une vue, vous pouvez supprimer l’élément en question et le recréer avec un nouveau nom.
Impossible de renommer une table utilisée
Vous ne pouvez pas renommer une table ou une base de données en cours d’utilisation. Pour renommer une table, vous avez besoin d’un verrou exclusif au niveau de la table. Si la table est en cours d’utilisation, vous pouvez être amené à terminer les sessions qui utilisent la table. Pour terminer une session, vous pouvez utiliser la commande KILL. Utilisez KILL avec précaution, car lorsqu’une session se termine, le travail non validé est annulé. Les sessions dans Azure Synapse Analytics sont précédées du préfixe « SID ». Vous devez inclure le préfixe « SID » et le numéro de session lorsque vous appelez la commande KILL. Cet exemple présente une liste de sessions actives ou inactives, puis termine la session « SID1234 ».
Restrictions relatives au renommage de colonnes
Vous ne pouvez pas renommer une colonne qui est utilisée pour la distribution de la table. Vous ne pouvez pas non plus renommer les colonnes d’une table externe ou d’une table temporaire.
Les vues ne sont pas mises à jour
Quand vous renommez une base de données, toutes les vues qui utilisent l’ancien nom de la base de données deviennent non valides. Ce comportement vaut pour les vues internes et externes à la base de données. Par exemple, si la base de données Sales est renommée, une vue qui contient SELECT * FROM Sales.dbo.table1
devient non valide. Pour résoudre ce problème, évitez d’utiliser des noms en trois parties dans les vues ou mettez à jour les vues pour qu’elles référencent le nouveau nom de la base de données.
Quand une table est renommée, les vues ne sont pas mises à jour pour référencer le nouveau nom de la table. Chaque vue, interne ou externe à la base de données, qui référence l’ancien nom de la table devient non valide. Pour résoudre ce problème, mettez à jour chaque vue pour qu’elle référence le nouveau nom de la table.
Quand vous renommez une colonne, les vues ne sont pas mises à jour pour référencer le nouveau nom de la colonne. Les vues continuent d’afficher l’ancien nom de colonne jusqu’à ce qu’une instruction ALTER VIEW soit exécutée. Les vues peuvent devenir non valides dans certains cas, vous obligeant à les supprimer et à les recréer.
Verrouillage
Le renommage d’une table nécessite un verrou partagé au niveau de l’objet DATABASE, un verrou partagé au niveau de l’objet SCHEMA et un verrou exclusif au niveau de la table.
Exemples
R. Renommer une base de données
S’applique à : Analytics Platform System (PDW) uniquement
Dans cet exemple, la base de données définie par l’utilisateur AdWorks est renommée AdWorks2.
-- Rename the user defined database AdWorks
RENAME DATABASE AdWorks to AdWorks2;
Quand vous renommez une table, tous les objets et les propriétés associés à la table sont mis à jour pour qu’ils référencent le nouveau nom de la table. Par exemple, les définitions, les index, les contraintes et les autorisations de la table sont mis à jour. Les vues ne sont pas mises à jour.
B. Renommer une table
S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)
Dans cet exemple, la table Customer est renommée Customer1.
-- Rename the customer table
RENAME OBJECT Customer TO Customer1;
RENAME OBJECT mydb.dbo.Customer TO Customer1;
Quand vous renommez une table, tous les objets et les propriétés associés à la table sont mis à jour pour qu’ils référencent le nouveau nom de la table. Par exemple, les définitions, les index, les contraintes et les autorisations de la table sont mis à jour. Les vues ne sont pas mises à jour.
C. Déplacer une table vers un schéma différent
S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)
Si votre intention est de déplacer l’objet vers un autre schéma, utilisez ALTER SCHEMA. Par exemple, l’instruction suivante déplace l’élément table du schéma product vers le schéma dbo.
ALTER SCHEMA dbo TRANSFER OBJECT::product.item;
D. Terminer les sessions avant de renommer une table
S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)
Vous ne pouvez pas renommer une table pendant qu’elle est en cours d’utilisation. Le renommage d’une table nécessite un verrou exclusif au niveau de la table. Si la table est en cours d’utilisation, vous serez peut-être amené à terminer la session qui utilise la table. Pour terminer une session, vous pouvez utiliser la commande KILL. Utilisez KILL avec précaution, car lorsqu’une session se termine, le travail non validé est annulé. Les sessions dans Azure Synapse Analytics sont précédées du préfixe « SID ». Vous devez inclure le préfixe « SID » et le numéro de session lorsque vous appelez la commande KILL. Cet exemple présente une liste de sessions actives ou inactives, puis termine la session « 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. Renommer une colonne
S’applique à : Analytics Platform System (PDW)
Cet exemple renomme la colonne FName de la table Customer en 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;