RENAME (Transact-SQL)

Si applica a:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Rinominare una tabella creata dall'utente in Azure Synapse Analytics. Rinomina una tabella creata dall'utente, una colonna in una tabella o un database creato dall'utente in Piattaforma di strumenti analitici (PDW).

Questo articolo si applica solo a Azure Synapse Analytics e Analytics Platform System (PDW):

  • Per rinominare un database in SQL Server, usare la stored procedure sp_renamedb.
  • Per rinominare un database nel database SQL di Azure, usare l'istruzione ALTER DATABASE (database SQL di Azure).
  • È supportata la ridenominazione dei pool SQL dedicati autonomi (in precedenza SQL Data Warehouse). La ridenominazione di un pool SQL dedicato nelle aree di lavoro Azure Synapse Analytics non è attualmente supportata.
  • Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Sintassi

-- 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 [;]

Argomenti

RENAME OBJECT [::] [ [database_name . [ schema_name ]. ] | [ schema_name. ] ] table_name TO new_table_name

Si applica a: Azure Synapse Analytics, Analytics Platform System (PDW)

Modifica il nome di una tabella definita dall'utente. Specificare la tabella da rinominare con un nome in una, due o tre parti. Specificare il nome new_table_name della nuova tabella come nome in una parte.

RENAME DATABASE [::] [ database_name TO new_database_name

Si applica a: Piattaforma di strumenti analitici (PDW)

Modifica il nome di un database definito dall'utente da database_name a new_database_name. Non è possibile rinominare un database in uno dei seguenti nomi di database riservati di Analytics Platform System (PDW):

  • 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

Si applica a: Piattaforma di strumenti analitici (PDW)

Modificare il nome di una colonna in una tabella.

Autorizzazioni

Per eseguire questo comando, è necessaria questa autorizzazione:

  • Autorizzazione ALTER per la tabella

Limitazioni e restrizioni

Non è possibile rinominare tabelle, indici e viste esterne

Non è possibile rinominare tabelle, indici o viste esterne. Anziché rinominare la tabella, l'indice o la vista esterna, è possibile rilasciarla e quindi ricrearla con il nuovo nome.

Non è possibile rinominare una tabella in uso

Non è possibile rinominare una tabella o un database mentre è in uso. Per la ridenominazione di una tabella è necessario un blocco esclusivo su di essa. Se la tabella è in uso, può essere necessario terminare le sessioni che la usano. Per terminare una sessione, è possibile usare il comando KILL. Usare KILL con cautela, poiché quando una sessione viene terminata, viene eseguito il rollback di tutte le operazioni di cui non è stato eseguito il commit. Le sessioni in Azure Synapse Analytics hanno il prefisso "SID". Quando si richiama il comando KILL, includere il prefisso 'SID' e il numero della sessione. Questo esempio visualizza un elenco di sessioni attive o inattive e quindi termina la sessione 'SID1234'.

Restrizioni per la ridenominazione delle colonne

Non è possibile rinominare una colonna usata per la distribuzione della tabella. Non è inoltre possibile rinominare le colonne in una tabella esterna o una tabella temporanea.

Le viste non vengono aggiornate

Quando si rinomina un database, tutte le viste che usano il nome precedente non sono più valide. Questo comportamento vale per le viste sia all'interno che all'esterno del database. Se ad esempio il database delle vendite viene rinominato, le viste che contengono SELECT * FROM Sales.dbo.table1 non sono più valide. Per risolvere questo problema, è possibile evitare di usare nomi in tre parti nelle viste o aggiornare le viste in modo che facciano riferimento al nuovo nome del database.

Quando si rinomina una tabella, le viste non vengono aggiornate in modo che facciano riferimento al nuovo nome di tabella. Tutte le viste, all'interno o all'esterno del database, che fanno riferimento al nome di tabella precedente non sono più valide. Per risolvere questo problema, è possibile aggiornare ogni vista in modo che faccia riferimento al nuovo nome della tabella.

Quando si rinomina una colonna, le viste non vengono aggiornate in modo che facciano riferimento al nuovo nome di colonna. Le viste continueranno a visualizzare il nome della colonna precedente fino a quando non viene eseguita un'operazione di modifica della vista. In alcuni casi, le viste possono diventare non valide rendendo necessario eliminarle e ricrearle.

Blocco

La ridenominazione di una tabella acquisisce un blocco condiviso per l'oggetto DATABASE, un blocco condiviso per l'oggetto SCHEMA e un blocco esclusivo per la tabella.

Esempi

R. Rinominare un database

Si applica a: Solo sistema di piattaforma di analisi (PDW)

Questo esempio rinomina il database definito dall'utente AdWorks in AdWorks2.

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

Quando si rinomina una tabella, tutti gli oggetti e tutte le proprietà associate alla tabella vengono aggiornati in modo che facciano riferimento al nuovo nome della tabella. Vengono aggiornati, ad esempio, le definizioni di tabella, gli indici, i vincoli e le autorizzazioni. Le viste non vengono aggiornate.

B. Rinominare una tabella

Si applica a: Azure Synapse Analytics, Analytics Platform System (PDW)

Questo esempio rinomina la tabella Customer in Customer1.

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

RENAME OBJECT mydb.dbo.Customer TO Customer1;

Quando si rinomina una tabella, tutti gli oggetti e tutte le proprietà associate alla tabella vengono aggiornati in modo che facciano riferimento al nuovo nome della tabella. Vengono aggiornati, ad esempio, le definizioni di tabella, gli indici, i vincoli e le autorizzazioni. Le viste non vengono aggiornate.

C. Spostare una tabella in un altro schema

Si applica a: Azure Synapse Analytics, Analytics Platform System (PDW)

Se si intende spostare l'oggetto in un altro schema, usare ALTER SCHEMA. L'istruzione seguente, ad esempio, sposta l'elemento tabella dallo schema product allo schema dbo.

ALTER SCHEMA dbo TRANSFER OBJECT::product.item;

D. Terminare le sessioni prima di rinominare una tabella

Si applica a: Azure Synapse Analytics, Analytics Platform System (PDW)

Non è possibile rinominare una tabella mentre è in uso. La ridenominazione di una tabella richiede un blocco esclusivo su di essa. Se la tabella è in uso, può essere necessario terminare le sessioni che la usano. Per terminare una sessione, è possibile usare il comando KILL. Usare KILL con cautela, poiché quando una sessione viene terminata, viene eseguito il rollback di tutte le operazioni di cui non è stato eseguito il commit. Le sessioni in Azure Synapse Analytics hanno il prefisso "SID". Quando si richiama il comando KILL, è necessario includere il prefisso 'SID' e il numero della sessione. Questo esempio visualizza un elenco di sessioni attive o inattive e quindi termina la sessione '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. Rinominare una colonna

Si applica a: Sistema piattaforma di analisi (PDW)

In questo esempio la colonna FName della tabella Customer viene rinominata in 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;

Passaggi successivi