sp_rename (Transact-SQL)sp_rename (Transact-SQL)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Consente di modificare il nome di un oggetto creato dall'utente nel database corrente.Changes the name of a user-created object in the current database. Questo oggetto può essere una tabella, indice, colonna, tipo di dati alias oppure MicrosoftMicrosoft .NET Framework.NET Framework definite dall'utente tipo di common language runtime (CLR).This object can be a table, index, column, alias data type, or MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR) user-defined type.

Attenzione

La modifica di una parte del nome di un oggetto potrebbe compromettere il funzionamento di script e stored procedure.Changing any part of an object name can break scripts and stored procedures. È 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.We recommend you do not use this statement to rename stored procedures, triggers, user-defined functions, or views; instead, drop the object and re-create it with the new name.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

[ @objname =] 'object_name'[ @objname = ] 'object_name'
Nome corrente completo o non qualificato dell'oggetto utente o del tipo di dati.Is the current qualified or nonqualified name of the user object or data type. Se l'oggetto da rinominare è una colonna in una tabella, object_name deve essere nel formato Table. Column oppure schema.table.column.If the object to be renamed is a column in a table, object_name must be in the form table.column or schema.table.column. Se l'oggetto da rinominare è un indice object_name deve essere nel formato Table. index oppure schema.table.index.If the object to be renamed is an index, object_name must be in the form table.index or schema.table.index. Se l'oggetto da rinominare è un vincolo object_name deve essere nel formato schema.constraint.If the object to be renamed is a constraint, object_name must be in the form schema.constraint.

Le virgolette sono necessarie solo se viene specificato un nome di oggetto completo.Quotation marks are only necessary if a qualified object is specified. Nel caso di un nome completo, ovvero contenente un nome di database, il nome del database deve corrispondere a quello del database corrente.If a fully qualified name, including a database name, is provided, the database name must be the name of the current database. object_name viene nvarchar(776) , non prevede alcun valore predefinito.object_name is nvarchar(776), with no default.

[ @newname =] 'new_name'[ @newname = ] 'new_name'
Nuovo nome dell'oggetto specificato.Is the new name for the specified object. new_name deve essere un nome composto da una parte e devono rispettare le regole per gli identificatori.new_name must be a one-part name and must follow the rules for identifiers. newname viene sysname, non prevede alcun valore predefinito.newname is sysname, with no default.

Nota

I nomi di trigger non possono iniziare con # o ##.Trigger names cannot start with # or ##.

[ @objtype =] 'object_type'[ @objtype = ] 'object_type'
Tipo dell'oggetto da rinominare.Is the type of object being renamed. object_type viene varchar(13) , con un valore predefinito è NULL, i possibili valori sono i seguenti.object_type is varchar(13), with a default of NULL, and can be one of these values.

ValueValue DescrizioneDescription
COLUMNCOLUMN Colonna da rinominare.A column to be renamed.
DATABASEDATABASE Database definito dall'utente.A user-defined database. Quando si rinomina un database è necessario specificare questo tipo di oggetto.This object type is required when renaming a database.
INDEXINDEX Indice definito dall'utente.A user-defined index. Se si rinomina un indice con statistiche, vengono automaticamente rinominate anche le statistiche.Renaming an index with statistics, also automatically renames the statistics.
OBJECTOBJECT Un elemento di un tipo registrato in Sys. Objects.An item of a type tracked in sys.objects. È ad esempio possibile utilizzare OBJECT per rinominare oggetti che includono vincoli (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), tabelle utente e regole.For example, OBJECT could be used to rename objects including constraints (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), user tables, and rules.
STATISTICSSTATISTICS Si applica a : da SQL Server 2012 (11.x)SQL Server 2012 (11.x) fino a SQL Server 2019SQL Server 2019 e Database SQL di AzureAzure SQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2019SQL Server 2019 and Database SQL di AzureAzure SQL Database.

Statistiche create in modo esplicito da un utente o in modo implicito con un indice.Statistics created explicitly by a user or created implicitly with an index. Se si rinominano le statistiche di un indice, viene automaticamente rinominato anche l'indice.Renaming the statistics of an index automatically renames the index as well.
USERDATATYPEUSERDATATYPE Oggetto i tipi CLR definiti dall'utente aggiunti tramite l'istruzione CREATE TYPE oppure sp_addtype.A CLR User-defined Types added by executing CREATE TYPE or sp_addtype.

Valori restituitiReturn Code Values

0 (esito positivo) o un numero diverso da zero (esito negativo)0 (success) or a nonzero number (failure)

NoteRemarks

È possibile modificare il nome di un oggetto o un tipo di dati solo nel database corrente.You can change the name of an object or data type in the current database only. I nomi della maggior parte dei tipi di dati e degli oggetti di sistema non sono modificabili.The names of most system data types and system objects cannot be changed.

La stored procedure sp_rename rinomina automaticamente l'indice associato ogni volta che viene rinominato un vincolo PRIMARY KEY o UNIQUE.sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. Se un indice rinominato è associato a un vincolo PRIMARY KEY, quando si esegue sp_rename viene rinominato automaticamente anche il vincolo PRIMARY KEY.If a renamed index is tied to a PRIMARY KEY constraint, the PRIMARY KEY constraint is also automatically renamed by sp_rename.

La stored procedure sp_rename può essere utilizzata per rinominare indici XML primari e secondari.sp_rename can be used to rename primary and secondary XML indexes.

Ridenominazione di una stored procedure, funzione, vista o trigger non modificherà il nome dell'oggetto corrispondente nella colonna definition della Sys. sql_modules vista del catalogo o ottenuto usando la Object DEFINIZIONE funzione predefinita.Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object either in the definition column of the sys.sql_modules catalog view or obtained using the OBJECT_DEFINITION built-in function. È pertanto consigliabile evitare di utilizzare sp_rename per rinominare questi tipi di oggetto.Therefore, we recommend that sp_rename not be used to rename these object types. In alternativa, eliminare e ricreare l'oggetto con il nuovo nome.Instead, drop and re-create the object with its new name.

La ridenominazione di un oggetto, ad esempio una tabella o una colonna, non aggiorna automaticamente i riferimenti a tale oggettoRenaming an object such as a table or column will not automatically rename references to that object. ed è necessario modificare manualmente tutti gli oggetti che fanno riferimento all'oggetto rinominato.You must modify any objects that reference the renamed object manually. 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.For example, if you rename a table column and that column is referenced in a trigger, you must modify the trigger to reflect the new column name. Usare sys.sql_expression_dependencies per elencare le dipendenze dall'oggetto prima di rinominarlo.Use sys.sql_expression_dependencies to list dependencies on the object before renaming it.

PermissionsPermissions

Per rinominare oggetti, colonne e indici, è necessario disporre dell'autorizzazione ALTER per l'oggetto.To rename objects, columns, and indexes, requires ALTER permission on the object. Per rinominare tipi definiti dall'utente, è necessario disporre dell'autorizzazione CONTROL per il tipo.To rename user types, requires CONTROL permission on the type. Per rinominare un database, è richiesta l'appartenenza al ruolo predefinito del server sysadmin o dbcreator.To rename a database, requires membership in the sysadmin or dbcreator fixed server roles

EsempiExamples

R.A. Ridenominazione di una tabellaRenaming a table

Nell'esempio seguente la tabella SalesTerritory viene rinominata in SalesTerr nello schema Sales .The following example renames the SalesTerritory table to SalesTerr in the Sales schema.

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

B.B. Ridenominazione di una colonnaRenaming a column

Nell'esempio seguente viene rinominato il TerritoryID colonna il SalesTerritory alla tabella TerrID.The following example renames the TerritoryID column in the SalesTerritory table to TerrID.

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

C.C. Ridenominazione di un indiceRenaming an index

Nell'esempio seguente l'indice IX_ProductVendor_VendorID viene rinominato in IX_VendorID.The following example renames the IX_ProductVendor_VendorID index to IX_VendorID.

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

D.D. Ridenominazione di un tipo di dati aliasRenaming an alias data type

Nell'esempio seguente il tipo di dati alias Phone viene rinominato in Telephone.The following example renames the Phone alias data type to Telephone.

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

E.E. Ridenominazione dei vincoliRenaming constraints

Negli esempi seguenti vengono rinominati un vincolo PRIMARY KEY, un vincolo CHECK e un vincolo FOREIGN KEY.The following examples rename a PRIMARY KEY constraint, a CHECK constraint and a FOREIGN KEY constraint. Quando si rinomina un vincolo, è necessario specificare lo schema di appartenenza del vincolo.When renaming a constraint, the schema to which the constraint belongs must be specified.

USE AdventureWorks2012;   
GO  
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.  
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc  
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))   
AND type IN ('C','F', 'PK');   
GO  
  
-- Rename the primary key constraint.  
sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';  
GO  
  
-- Rename a check constraint.  
sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';  
GO  
  
-- Rename a foreign key constraint.  
sp_rename 'HumanResources.FK_Employee_Person_BusinessEntityID', 'FK_EmployeeID';  
  
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.  
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc  
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))   
AND type IN ('C','F', 'PK');  
  
  
name                                  schema_name        type_desc  
------------------------------------- ------------------ ----------------------  
FK_Employee_Person_BusinessEntityID   HumanResources     FOREIGN_KEY_CONSTRAINT  
PK_Employee_BusinessEntityID          HumanResources     PRIMARY_KEY_CONSTRAINT  
CK_Employee_BirthDate                 HumanResources     CHECK_CONSTRAINT  
CK_Employee_MaritalStatus             HumanResources     CHECK_CONSTRAINT  
CK_Employee_HireDate                  HumanResources     CHECK_CONSTRAINT  
CK_Employee_Gender                    HumanResources     CHECK_CONSTRAINT  
CK_Employee_VacationHours             HumanResources     CHECK_CONSTRAINT  
CK_Employee_SickLeaveHours            HumanResources     CHECK_CONSTRAINT  
  
(7 row(s) affected)  
  
name                                  schema_name        type_desc  
------------------------------------- ------------------ ----------------------  
FK_Employee_ID                        HumanResources     FOREIGN_KEY_CONSTRAINT  
PK_Employee_ID                        HumanResources     PRIMARY_KEY_CONSTRAINT  
CK_BirthDate                          HumanResources     CHECK_CONSTRAINT  
CK_Employee_MaritalStatus             HumanResources     CHECK_CONSTRAINT  
CK_Employee_HireDate                  HumanResources     CHECK_CONSTRAINT  
CK_Employee_Gender                    HumanResources     CHECK_CONSTRAINT  
CK_Employee_VacationHours             HumanResources     CHECK_CONSTRAINT  
CK_Employee_SickLeaveHours            HumanResources     CHECK_CONSTRAINT  
  
(7 row(s) affected)  
  

F.F. Ridenominazione delle statisticheRenaming statistics

Nell'esempio seguente crea un oggetto statistiche denominato contactMail1 e successivamente vengono rinominate le statistiche al nuovo contatto tramite sp_rename.The following example creates a statistics object named contactMail1 and then renames the statistic to NewContact by using sp_rename. Quando si rinominano le statistiche, l'oggetto deve essere specificato nel formato schema.table.statistics_name.When renaming statistics, the object must be specified in the format schema.table.statistics_name.

CREATE STATISTICS ContactMail1  
    ON Person.Person (BusinessEntityID, EmailPromotion)  
    WITH SAMPLE 5 PERCENT;  
  
sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';  
  

Vedere ancheSee Also

sys.sql_expression_dependencies (Transact-SQL) sys.sql_expression_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
Stored procedure di sistema (Transact-SQL) System Stored Procedures (Transact-SQL)
Motore di database le Stored procedure (Transact-SQL)Database Engine Stored Procedures (Transact-SQL)