sp_rename (Transact-SQL)

S’applique à : ouiSQL Server (toutes les versions prises en charge) OuiAzure SQL Database ouiAzure Synapse Analytics

Modifie le nom d'un objet créé par l'utilisateur dans la base de données actuelle. Cet objet peut être une table, un index, une colonne, un type de données alias ou un Microsoft .NET Framework type Common Language Runtime (CLR) défini par l’utilisateur.

Notes

Dans Azure Synapse Analytics , sp_rename est en version préliminaire et ne peut être utilisé que pour renommer une colonne dans un objet utilisateur dans le schéma dbo .

Attention

La modification d'une partie du nom de l'objet peut provoquer des problèmes dans des scripts et des procédures stockées. Nous vous recommandons de ne pas utiliser cette instruction pour renommer des procédures stockées, des déclencheurs, des fonctions définies par l'utilisateur ou des vues ; supprimez plutôt l'objet et recréez-le avec le nouveau nom.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

-- Transact-SQL Syntax for sp_rename in SQL Server and Azure SQL Database
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]   
-- Transact-SQL Syntax for sp_rename (preview) in Azure Synapse Analytics
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    , [ @objtype = ] 'COLUMN'   

Arguments

[ @objname =] 'object_name'
Nom actuel, complet ou non, de l'objet utilisateur ou du type de données. Si l’objet à renommer est une colonne dans une table, object_name doit se présenter sous la forme table. Column ou Schema. table. Column. Si l’objet à renommer est un index, object_name doit se présenter sous la forme table. index ou Schema. table. index. Si l’objet à renommer est une contrainte, object_name doit se présenter sous la forme Schema. Constraint.

Les guillemets ne sont nécessaires que si un nom complet d'objet est spécifié. Si un nom qualifié complet (incluant un nom de base de données) est fourni, le nom de base de données doit être celui de la base de données active. object_name est de type nvarchar (776), sans valeur par défaut.

[ @newname =] 'new_name'
Nouveau nom de l'objet spécifié. new_name doit être un nom en une partie et doit respecter les règles applicables aux identificateurs. NewName est de type sysname, sans valeur par défaut.

Notes

Les noms de déclencheurs ne peuvent pas commencer par # ou par ##.

[ @objtype =] 'object_type'
Type d'objet renommé. object_type est de type varchar (13), avec NULL comme valeur par défaut et peut prendre l’une des valeurs suivantes.

Valeur Description
COLUMN Colonne à renommer.
DATABASE Base de données définie par l'utilisateur. Ce type d'objet est nécessaire pour renommer une base de données.
INDEX Index défini par l'utilisateur. Renommer un index avec des statistiques, renomme également automatiquement les statistiques.
OBJECT Élément d’un type suivi dans sys. Objects. Par exemple, OBJECT peut être utilisé pour renommer des objets, y compris des contraintes (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), des tables utilisateur et des règles.
STATISTICS S’applique à : SQL Server 2012 (11.x) et versions ultérieures et Azure SQL Database.

Statistiques créées explicitement par un utilisateur ou créées implicitement avec un index. Renommer les statistiques d'un index renomme également automatiquement l'index.
USERDATATYPE Types CLR définis par l’utilisateur ajoutés en exécutant Create type ou sp_addtype.

[ @objtype =] 'Colonne' s’applique à: Azure Synapse Analytics
Dans sp_rename (version préliminaire) pour Azure Synapse Analytics , Column est un paramètre obligatoire spécifiant que le type d’objet à renommer est une colonne. Il s’agit d’un varchar (13) sans valeur par défaut et doit toujours être inclus dans l’instruction sp_rename (préversion). Une colonne ne peut être renommée que s’il s’agit d’une colonne de non-distribution.

Codet de retour

0 (réussite) ou un nombre différent de zéro (échec)

Remarques

S’applique à SQL Server (toutes les versions prises en charge) et Azure SQL Database
sp_rename renomme automatiquement l'index associé chaque fois qu'une contrainte PRIMARY KEY ou UNIQUE est renommée. Si un index renommé est lié à une contrainte PRIMARY KEY, cette dernière est également renommée automatiquement par sp_rename.

S’applique à SQL Server (toutes les versions prises en charge) et Azure SQL Database
Vous pouvez utiliser sp_rename pour renommer des index XML primaires et secondaires.

S’applique à SQL Server (toutes les versions prises en charge) et Azure SQL Database
Le changement du nom d’une procédure stockée, d’une fonction, d’une vue ou d’un déclencheur ne modifie pas le nom de l’objet correspondant dans la colonne de définition de l’affichage catalogue sys.sql_modules ou obtenu à l’aide de la fonction intégrée OBJECT_DEFINITION . Par conséquent, il est déconseillé d'utiliser sp_rename pour renommer ces types d'objets. Supprimez, puis recréez plutôt l'objet avec son nouveau nom.

S’applique à SQL Server (toutes les versions prises en charge), Azure SQL Database et Azure Synapse Analytics
Le fait de renommer un objet tel qu'une table ou une colonne ne renomme pas automatiquement les références à cet objet. Vous devez modifier manuellement tout objet qui référence l'objet renommé. Par exemple, si vous renommez une colonne de table et si cette colonne est référencée dans un déclencheur, vous devez modifier le déclencheur pour refléter le nouveau nom de colonne. Utilisez sys.sql_expression_dependencies pour obtenir la liste des dépendances de l’objet avant de le renommer.

S’applique à SQL Server (toutes les versions prises en charge), Azure SQL Database et Azure Synapse Analytics
Il n'est possible de modifier le nom d'un objet ou d'un type de données que dans la base de données active. Il est impossible de modifier les noms de la plupart des types de données système et des objets système.

Autorisations

Pour renommer des objets, des colonnes et des index, il vous faut l'autorisation ALTER sur l'objet concerné. Pour renommer des types définis par l'utilisateur, il vous faut une autorisation CONTROL sur le type concerné. Pour renommer une base de données, vous devez être membre des rôles serveur fixes dbcreator ou sysadmin.

Exemples

R. Modification du nom d'une table

L'exemple suivant renomme la table SalesTerritory en SalesTerr dans le schéma Sales .

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

B. Modification du nom d'une colonne

L’exemple suivant renomme la TerritoryID colonne dans la SalesTerritory table en TerrID .

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

C. Modification du nom d'un index

L'exemple suivant renomme l'index IX_ProductVendor_VendorID en IX_VendorID.

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

D. Modification du nom d'un type de données d'alias

L'exemple suivant renomme le type de données d'alias Phone en Telephone.

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

E. Attribution d'un nouveau nom aux contraintes

Les exemples suivants renomment une contrainte PRIMARY KEY, une contrainte CHECK et une contrainte FOREIGN KEY. Lors de l'attribution d'un nouveau nom à une contrainte, le schéma auquel la contrainte appartient doit être spécifié.

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. Renommer des statistiques

L’exemple suivant crée un objet de statistiques nommé contactMail1, puis renomme les statistiques en NewContact à l’aide de sp_rename. Lorsque vous renommez des statistiques, l'objet doit être spécifié en respectant le format schema.table.statistics_name.

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

Exemples : Azure Synapse Analytics

G. Modification du nom d'une colonne

L’exemple suivant renomme la c1 colonne dans la table1 table en col1 .

Notes

Cette Azure Synapse Analytics fonctionnalité est toujours en version préliminaire et n’est actuellement disponible que pour les objets du schéma dbo .

CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO  

Voir aussi

sys.sql_expression_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Procédures stockées système (Transact-SQL)
Moteur de base de données des procédures stockées (Transact-SQL)