sp_rename (Transact-SQL)
S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Point de terminaison analytique SQL dans Microsoft Fabric Entrepôt dans Microsoft Fabric
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 Microsoft
Type clR (Common Language Runtime) .NET Framework défini par l’utilisateur.
Important
Certains objets système et syntaxe Transact-SQL ne sont pas pris en charge dans les pools SQL serverless dans Azure Synapse Analytique, y compris cet article. Pour plus d’informations, consultez le support T-SQL.
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 ; à la place, supprimez l’objet et recréez-le avec le nouveau nom.
Conventions de la syntaxe Transact-SQL
Syntaxe
Syntaxe pour sp_rename
SQL Server et Azure SQL Database :
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Syntaxe pour sp_rename
(préversion) dans Azure Synapse Analytique :
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Syntaxe de sp_rename
Microsoft Fabric :
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Arguments
[ @objname = ] 'object_name'
Nom qualifié ou non qualifié actuel de l’objet utilisateur ou du type de données. Si l’objet à renommer est une colonne d’une table, object_name doit se trouver dans le formulaire table.column ou schema.table.column. Si l’objet à renommer est un index, object_name doit se trouver dans le formulaire table.index ou schema.table.index. Si l’objet à renommer est une contrainte, object_name doit se trouver dans le formulaire 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 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 doit respecter les règles pour les identificateurs. newname est sysname, sans valeur par défaut.
Les noms de déclencheurs ne peuvent pas commencer par # ou ##.
S’applique à Warehouse dans Microsoft Fabric :
- Les noms de schémas ne peuvent pas contenir
/
ou\
, ou se terminer par un.
. - Les noms de tables ne peuvent pas contenir
/
ou\
, ou se terminer par un.
.
[ @objtype = ] 'object_type'
Type d’objet renommé. object_type est varchar(13), avec une valeur par défaut NULL
, et peut être l’une de ces valeurs.
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 |
Type CLR défini par l’utilisateur ajouté en exécutant CREATE TYPE ou sp_addtype. |
S’applique à : Azure Synapse Analytics
- Dans
sp_rename
(préversion) pour Azure Synapse Analytique,COLUMN
est une valeur obligatoire spécifiant que le type d’objet à renommer est une colonne et doit toujours être inclus dans l’instructionsp_rename
. Une colonne ne peut être renommée que si elle n’est pas une colonne de distribution.sp_rename
ne peut être utilisé que pour renommer unCOLUMN
objet utilisateur.
S’applique à : Microsoft Fabric
- Dans
sp_rename
l’entrepôt dans Microsoft Fabric,OBJECT
est la seule valeur prise en charge pour @objtype. - Dans
sp_rename
le cas du point de terminaison SQL analytique dans Microsoft Fabric,OBJECT
la seule valeur prise en charge pour @objtype. Les tables ne peuvent pas être renommées.
Valeurs des codes de retour
0
(réussite) ou nombre différent de zéro (échec).
Notes
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, la contrainte PRIMARY KEY est également automatiquement renommée parsp_rename
.sp_rename
peut être utilisé pour renommer les index XML principaux et secondaires.Le changement de 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, nous vous recommandons de
sp_rename
ne pas être utilisés 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 Analytique :
Le renommage d’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.
Le changement de nom d’une colonne ne met pas automatiquement à jour les métadonnées pour les objets qui font un SELECT sur toutes les colonnes (à l’aide de
*
) de cette table. Par exemple, si vous renommez une colonne de table et que cette colonne est référencée par une vue ou une fonction non liée au schéma qui effectue le SELECT sur toutes les colonnes (à l’aide de*
), les métadonnées de la vue ou de la fonction continuent de refléter le nom de colonne d’origine. Actualisez les métadonnées à l’aide de sp_refreshsqlmodule ou sp_refreshview.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. Les noms de la plupart des types de données système et des objets système ne peuvent pas être modifiés.
Si vous utilisez plus de 128 caractères pour le nouveau nom, seuls les 128 premiers caractères sont utilisés et le reste est tronqué.
S’applique à Azure Synapse Analytique :
- Dans Azure Synapse Analytique,
sp_rename
est disponible en préversion pour les pools SQL dédiés.
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, nécessite l’appartenance aux rôles serveur fixes sysadmin ou dbcreator . Pour renommer une table de registre, l’autorisation ALTER LEDGER est requise.
Exemples
R. Renommer une table
L'exemple suivant renomme la table SalesTerritory
en SalesTerr
dans le schéma Sales
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Renommer une colonne
L’exemple suivant renomme la TerritoryID
colonne dans la SalesTerritory
table en TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Renommer un index
L'exemple suivant renomme l'index IX_ProductVendor_VendorID
en IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. Renommer un type de données alias
L'exemple suivant renomme le type de données d'alias Phone
en Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Renommer des 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 AdventureWorks2022;
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.
EXEC sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';
GO
-- Rename a check constraint.
EXEC sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';
GO
-- Rename a foreign key constraint.
EXEC 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');
GO
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 la statistique à NewContact
l’aide sp_rename
de . Lorsque vous renommez des statistiques, l’objet doit être spécifié au format « schema.table.statistics_name ».
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Exemples : Azure Synapse Analytics
G. Renommer une colonne
L’exemple suivant renomme la c1
colonne dans la table1
table en col1
.
Remarque
Cette fonctionnalité de Analytique Azure Synapse est toujours en préversion pour les pools SQL dédiés et est actuellement disponible uniquement pour les objets du dbo
schéma.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Renommer un objet
L’exemple suivant renomme la table dbo.table1
dbo.table2
en utilisant le OBJECT
type.
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';