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.

AttentionAttention

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 syntaxe Transact-SQL

Syntaxe

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

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 de 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.

    Les guillemets ne sont nécessaires que si un nom complet d'objet est spécifié. Si un nom complet (y compris 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.

    [!REMARQUE]

    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

    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.

    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.

    USERDATATYPE

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

Valeurs des codes de retour

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

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

Vous pouvez utiliser sp_rename 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 de définition de l'affichage catalogue sys.sql_modules. 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.

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

Exemples

A. Modification du nom d'une table

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

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 d'alias

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

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