RINOMINA (Transact-SQL)

Si applica a:Azure Synapse Analytics

Rinominare una tabella creata dall'utente in Azure Synapse Analytics.

Questo articolo si applica solo ad Azure Synapse Analytics:

  • Per rinominare un database in SQL Server, usare la stored procedure sp_renamedb.
  • Per rinominare un database in database SQL di Azure, usa la ALTER DATABASE dichiarazione (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 di 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
[;]

Argomenti

RINOMINA OGGETTO [::] [ [database_name . [ schema_name ]. ] | [ schema_name. ] table_name TO new_table_name

Si applica a: Azure Synapse Analytics

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.

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

Rinominare una tabella richiede un lock condiviso sull'oggetto DATABASE , un lock condiviso sull'oggetto SCHEMA e un lock esclusivo sulla tavola.

Esempi

R. Rinominare una tabella

Si applica a: Azure Synapse Analytics

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.

B. Spostare una tabella in un altro schema

Si applica a: Azure Synapse Analytics

Se la tua intenzione è spostare l'oggetto in uno schema diverso, usa ALTER SCHEMA. L'istruzione seguente, ad esempio, sposta l'elemento tabella dallo schema product allo schema dbo.

ALTER SCHEMA dbo TRANSFER OBJECT::product.item;

C. Terminare le sessioni prima di rinominare una tabella

Si applica a: Azure Synapse Analytics

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';