Partager via


sp_rename (Transact-SQL)

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 type CLR (Common Language Runtime) Microsoft .NET Framework défini par l'utilisateur.

ms188351.Caution(fr-fr,SQL.90).gifAttention :
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 rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

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

Arguments

[ @objname = ] 'object_name'

Spécifie le nom actuel, qualifié ou non, de l'objet utilisateur ou du type de données. Si l'objet à renommer est une colonne de table, object_name doit se présenter sous la forme table.column. Si l'objet à renommer est un index, object_namedoit prendre la forme de table.index.

Les guillemets ne sont nécessaires que si un objet qualifié est spécifié. Si un nom 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 seule partie et suivre les règles qui s'appliquent aux identificateurs. newname est de type sysname, sans valeur par défaut.

ms188351.note(fr-fr,SQL.90).gifRemarque :
Les noms de déclencheurs ne peuvent pas commencer par # ou par ##.

[ @objtype = ] 'object_type'

Type de l'objet qui doit être renommé. object_type est de type varchar(13), avec NULL comme valeur par défaut. Il peut prendre l'une des valeurs suivantes.

Valeur Description

COLUMN

Une colonne qui doit être renommée.

DATABASE

Une base de données définie par l'utilisateur. Ce type d'objet est nécessaire pour renommer une base de données.

INDEX

Un index défini par l'utilisateur.

OBJECT

Élément d'un type repris dans sys.objects. Par exemple, OBJECT peut être utilisé pour renommer les objets, notamment des contraintes (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), des tables utilisateur et des règles.

USERDATATYPE

Type de données alias ou types CLR définis par l'utilisateur créés en exécutant CREATE TYPE ou sp_addtype.

Notes

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.

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 contrainte est également renommée automatiquement par sp_rename.

La procédure sp_rename peut être utilisée pour renommer des index XML primaires et secondaires.

Le fait de renommer une procédure stockée, une fonction, une vue ou un déclencheur ne modifie pas le nom de l'objet correspondant dans la colonne definition de la vue de catalogue sys.sql_modules. C'est pourquoi nous vous recommandons de ne pas utiliser sp_rename pour renommer ces types d'objets. Dans ce cas, supprimez puis recréez cet objet avec son nouveau nom.

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 y appliquer le nouveau nom de la colonne. Utilisez sys.sql_dependencies pour obtenir la liste des dépendances de l'objet avant de le renommer.

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 de serveur fixes dbcreator ou sysadmin.

Valeurs des codes renvoyés

0 (réussite) ou un nombre non nul (échec)

Exemples

A. Modification du nom d'une table

L'exemple suivant renomme la table SalesTerritory en SalesTerr.

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

B. Modification du nom d'une colonne

L'exemple suivant renomme la colonne TerritoryID de la table SalesTerritory en TerrID.

USE AdventureWorks;
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 AdventureWorks;
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 alias

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

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

Voir aussi

Référence

sys.sql_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Procédures stockées système (Transact-SQL)
Procédures stockées du moteur de base de données (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005