sp_rename (Transact-SQL)

Consente di modificare il nome di un oggetto creato dall'utente nel database corrente. Questo oggetto può essere una tabella, un indice, una colonna, un tipo di dati alias oppure un tipo Microsoft .NET Framework Common Language Runtime (CLR) definito dall'utente.

ms188351.Caution(it-it,SQL.90).gifAttenzione:
La modifica di una parte del nome di un oggetto potrebbe compromettere il funzionamento di script e stored procedure. È consigliabile evitare di utilizzare questa istruzione per rinominare stored procedure, trigger, funzioni definite dall'utente o viste. In alternativa, eliminare l'oggetto e ricrearlo con il nuovo nome.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' 
    [ , [ @objtype = ] 'object_type' ] 

Argomenti

[ @objname = ] 'object_name'

Nome corrente completo o non qualificato dell'oggetto utente o del tipo di dati. Se l'oggetto da rinominare è una colonna di una tabella, object_name deve essere specificato nel formato table.column. Se l'oggetto da rinominare è un indice, object_namedeve essere specificato nel formato table.index.

Le virgolette sono necessarie solo se viene specificato un nome di oggetto completo. Se viene specificato un nome completo, ovvero contenente un nome di database, il nome del database deve essere quello del database corrente. object_name è di tipo nvarchar(776) e non prevede alcun valore predefinito.

[ @newname = ] 'new_name'

Nuovo nome dell'oggetto specificato. new_name deve essere un nome composto da una sola parte conforme alle regole per gli identificatori. newname è di tipo sysname e non prevede alcun valore predefinito.

[!NOTA] I nomi di trigger non possono iniziare con # o ##.

[ @objtype = ] 'object_type'

Tipo di oggetto da rinominare. object_type è di tipo varchar(13) e il valore predefinito è NULL. I possibili valori sono i seguenti.

Valore Descrizione

COLUMN

Colonna da rinominare.

DATABASE

Database definito dall'utente. Quando si rinomina un database è necessario specificare questo tipo di oggetto.

INDEX

Indice definito dall'utente.

OBJECT

Elemento di un tipo registrato in sys.objects. È ad esempio possibile utilizzare OBJECT per rinominare oggetti che includono vincoli (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), tabelle utente e regole.

USERDATATYPE

Tipo di dati alias o tipi CLR definiti dall'utente aggiunti tramite l'istruzione CREATE TYPE o la stored procedure sp_addtype.

Osservazioni

È possibile modificare il nome di un oggetto o un tipo di dati solo nel database corrente. I nomi della maggior parte dei tipi di dati e degli oggetti di sistema non sono modificabili.

La stored procedure sp_rename rinomina automaticamente l'indice associato ogni volta che viene rinominato un vincolo PRIMARY KEY o UNIQUE. Se un indice rinominato è associato a un vincolo PRIMARY KEY, quando si esegue sp_rename viene rinominato automaticamente anche il vincolo PRIMARY KEY.

La stored procedure sp_rename può essere utilizzata per rinominare indici XML primari e secondari.

La ridenominazione di una stored procedure, una funzione, una vista o un trigger non consente di modificare il nome dell'oggetto corrispondente nella colonna definition della vista del catalogo sys.sql_modules. Pertanto, è consigliabile evitare di utilizzare sp_rename per rinominare questi tipi di oggetto. In alternativa, eliminare e ricreare l'oggetto con il nuovo nome.

La ridenominazione di un oggetto quale una tabella o una colonna non aggiorna automaticamente i riferimenti a tale oggetto ed è necessario modificare manualmente tutti gli oggetti che fanno riferimento all'oggetto rinominato. Se, ad esempio, si rinomina una colonna di una tabella a cui viene fatto riferimento all'interno di un trigger, è necessario modificare il trigger in base al nuovo nome della colonna. Utilizzare sys.sql_dependencies per elencare le dipendenze dell'oggetto prima di rinominarlo.

Autorizzazioni

Per rinominare oggetti, colonne e indici, è necessario disporre dell'autorizzazione ALTER per l'oggetto. Per rinominare tipi definiti dall'utente, è necessario disporre dell'autorizzazione CONTROL per il tipo. Per rinominare un database, è richiesta l'appartenenza al ruolo predefinito del server sysadmin o dbcreator.

Valori restituiti

0 (esito positivo) o un numero diverso da zero (esito negativo)

Esempi

A. Ridenominazione di una tabella

Nell'esempio seguente viene rinominata la tabella SalesTerritory in SalesTerr.

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO

B. Ridenominazione di una colonna

Nell'esempio seguente viene rinominata la colonna TerritoryID della tabella SalesTerritory in TerrID.

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

C. Ridenominazione di un indice

Nell'esempio seguente viene rinominato l'indice IX_ProductVendor_VendorID in IX_VendorID.

USE AdventureWorks;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO

D. Ridenominazione di un tipo di dati alias

Nell'esempio seguente viene rinominato il tipo di dati alias Phone in Telephone.

USE AdventureWorks;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO

Vedere anche

Riferimento

sys.sql_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
Stored procedure del Motore di database (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005