sp_rename (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse
Ändert den Namen eines vom Benutzer erstellten Objekts in der aktuellen Datenbank. Dieses Objekt kann ein Tabellen-, Index-, Spalten-, Aliasdatentyp oder Microsoft sein.
.NET Framework Common Language Runtime (CLR) benutzerdefinierter Typ.
Wichtig
Einige Systemobjekte und Transact-SQL-Syntax werden in serverlosen SQL-Pools in Azure Synapse Analytics, einschließlich dieses Artikels, nicht unterstützt. Weitere Informationen finden Sie unter T-SQL-Unterstützung.
Achtung
Wenn Sie Teile eines Objektnamens ändern, können Skripts und gespeicherte Prozeduren funktionsunfähig werden. Wir empfehlen, diese Anweisung nicht zum Umbenennen gespeicherter Prozeduren, Trigger, benutzerdefinierter Funktionen oder Ansichten zu verwenden; Legen Sie stattdessen das Objekt ab, und erstellen Sie es mit dem neuen Namen erneut.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für sp_rename
SQL Server und Azure SQL-Datenbank:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Syntax für sp_rename
(Vorschau) in Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Syntax für sp_rename
microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumente
[ @objname = ] 'object_name'
Der aktuelle qualifizierte oder nicht qualifizierte Name des Benutzerobjekts oder Datentyps. Wenn das zu benennende Objekt eine Spalte in einer Tabelle ist, muss object_name sich in der Form "table.column" oder "schema.table.column" befinden. Wenn das zu benennende Objekt ein Index ist, muss object_name in der Form "table.index " oder "schema.table.index" enthalten sein. Wenn das umzubenennte Objekt eine Einschränkung ist, muss object_name sich in der Formschema.constraint befindet.
Anführungszeichen sind nur dann notwendig, wenn ein qualifiziertes Objekt angegeben wird. Bei Angabe eines vollqualifizierten Namens, einschließlich eines Datenbanknamens, muss es sich bei dem Datenbanknamen um den Namen der aktuellen Datenbank handeln. object_name ist nvarchar(776), ohne Standard.
[ @newname = ] 'new_name'
Der neue Name für das angegebene Objekt. new_name muss ein einteiliger Name sein und muss den Regeln für Bezeichner entsprechen. "newname" ist "sysname" ohne Standard.
Triggernamen können nicht mit # oder ## beginnen.
Gilt für Warehouse in Microsoft Fabric:
- Schemanamen dürfen keinen
/
oder\
enthalten oder mit einem.
enden. - Tabellennamen dürfen keinen
/
oder\
enthalten oder mit einem.
enden.
[ @objtype = ] 'object_type'
Der Typ des objekts, das umbenannt wird. object_type ist varchar(13) mit einem Standardwert von NULL
, und kann einer dieser Werte sein.
Wert | Beschreibung |
---|---|
SPALTE | Eine umzubenennende Spalte. |
DATABASE | Eine benutzerdefinierte Datenbank. Dieser Objekttyp ist erforderlich, wenn Sie eine Datenbank umbenennen. |
INDEX | Ein benutzerdefinierter Index. Beim Umbenennen eines Indizes mit Statistiken werden die Statistiken auch automatisch umbenannt. |
OBJECT | Ein Element eines Typs, der in sys.objects nachverfolgt wird. Beispielsweise könnte OBJECT zum Umbenennen von Objekten mit Einschränkungen (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), Benutzertabellen und Regeln verwendet werden. |
STATISTICS | Gilt für: SQL Server 2012 (11.x) und höher sowie Azure SQL-Datenbank. Explizit von einem Benutzer erstellte Statistiken oder implizit mit einem Index erstellt Beim Umbenennen der Statistiken eines Indizes wird der Index auch automatisch umbenannt. |
USERDATATYPE | Ein benutzerdefinierter CLR-Typ , der durch Ausführen von CREATE TYPE oder sp_addtype hinzugefügt wird. |
Gilt für: Azure Synapse Analytics
- In
sp_rename
(Vorschau) für Azure Synapse Analytics ist ein obligatorischer Wert, der angibt,COLUMN
dass der umzubenennende Objekttyp eine Spalte ist und immer in dersp_rename
Anweisung enthalten sein muss. Eine Spalte kann nur umbenannt werden, wenn sie keine Verteilerspalte ist.sp_rename
kann nur verwendet werden, um einCOLUMN
Benutzerobjekt umzubenennen.
Gilt für: Microsoft Fabric
- In
sp_rename
for the Warehouse in Microsoft Fabric,OBJECT
is the only supported value for @objtype. - Für
sp_rename
den SQL-Analyseendpunkt in Microsoft FabricOBJECT
ist der einzige unterstützte Wert für @objtype. Tabellen können nicht umbenannt werden.
Rückgabecodewerte
0 (Erfolg) oder eine Zahl ungleich Null (Fehler)
Hinweise
Gilt für SQL Server (alle unterstützten Versionen) und Azure SQL-Datenbank:
sp_rename
benennt den zugeordneten Index automatisch um, wenn eine PRIMARY KEY- oder UNIQUE-Einschränkung umbenannt wird. Wenn ein umbenannter Index an eine PRIMARY KEY-Einschränkung gebunden ist, wird die PRIMARY KEY-Einschränkung auch automatisch umbenannt durchsp_rename
.sp_rename
kann verwendet werden, um primäre und sekundäre XML-Indizes umzubenennen.Durch das Umbenennen einer gespeicherten Prozedur, einer Funktion, einer Ansicht oder eines Triggers wird der Name des entsprechenden Objekts weder in der Definitionsspalte der Katalogansicht sys.sql_modules noch mithilfe der integrierten OBJECT_DEFINITION-Funktion geändert. Daher wird empfohlen
sp_rename
, diese Objekttypen nicht umzubenennen. Löschen Sie stattdessen das Objekt, und erstellen Sie es neu mit dem neuen Namen.
Gilt für SQL Server (alle unterstützten Versionen), Azure SQL-Datenbank und Azure Synapse Analytics:
Durch das Umbenennen eines Objekts wie einer Tabelle oder Spalte werden Verweise auf dieses Objekt nicht automatisch umbenannt. Sie müssen Objekte, die auf das umbenannte Objekt verweisen, manuell ändern. Wenn Sie z. B. eine Tabellenspalte umbenennen und in einem Trigger auf diese Spalte verwiesen wird, müssen Sie den Trigger ändern, sodass er den neuen Spaltennamen wiedergibt. Verwenden Sie sys.sql_expression_dependencies , um Abhängigkeiten vom Objekt aufzulisten, bevor Sie es umbenennen.
Durch das Umbenennen einer Spalte werden die Metadaten für Objekte, die alle Spalten aus dieser Tabelle (mit
*
) auswählen, nicht automatisch aktualisiert. Wenn Sie z. B. eine Tabellenspalte umbenennen, und auf diese Spalte durch eine nicht schemagebundene Ansicht oder Funktion verwiesen wird, die alle Spalten auswählt (mit*
), weisen die Metadaten für die Ansicht oder Funktion weiterhin den ursprünglichen Spaltennamen auf. Aktualisieren Sie die Metadaten mithilfe von sp_refreshsqlmodule oder sp_refreshview.Sie können Objekte und Datentypen nur in der aktuellen Datenbank umbenennen. Die Namen der meisten Systemdatentypen und Systemobjekte können nicht geändert werden.
Wenn Sie für den neuen Namen mehr als 128 Zeichen verwenden, werden nur die ersten 128 Zeichen verwendet, und der Rest wird abgeschnitten.
Gilt für Azure Synapse Analytics:
- In Azure Synapse Analytics
sp_rename
befindet sich die Vorschau für dedizierte SQL-Pools.
Berechtigungen
Zum Umbenennen von Objekten, Spalten und Indizes ist die ALTER-Berechtigung für das entsprechende Objekt erforderlich. Zum Umbenennen von Benutzertypen ist die CONTROL-Berechtigung für den entsprechenden Typ erforderlich. Um eine Datenbank umzubenennen, ist die Mitgliedschaft in den festen Serverrollen "sysadmin " oder "dbcreator " erforderlich. Um eine Ledger-Tabelle umzubenennen, ist die ALTER LEDGER-Berechtigung erforderlich.
Beispiele
A. Umbenennen einer Tabelle
Im folgenden Beispiel wird die SalesTerritory
-Tabelle im Schema SalesTerr
in Sales
umbenannt.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Umbenennen einer Spalte
Im folgenden Beispiel wird die TerritoryID
Spalte in der SalesTerritory
Tabelle TerrID
in .
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Umbenennen eines Indexes
Im folgenden Beispiel wird der IX_ProductVendor_VendorID
-Index in IX_VendorID
umbenannt.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D: Umbenennen eines Aliasdatentyps
Im folgenden Beispiel wird der Phone
-Aliasdatentyp in Telephone
umbenannt.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Umbenennen von Einschränkungen
In den folgenden Beispielen wird eine PRIMARY KEY-Einschränkung, CHECK-Einschränkung und FOREIGN KEY-Einschränkung umbenannt. Beim Umbenennen einer Einschränkung muss das Schema angegeben werden, dem die Einschränkung angehört.
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. Umbenennen von Statistiken
Das folgende Beispiel erstellt ein Statistikobjekt namens contactMail1
und benennt dann die Statistik NewContact
mithilfe sp_rename
von . Wenn Sie Statistiken umbenennen, muss das Objekt im Format "schema.table.statistics_name" angegeben werden.
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Beispiele: Azure Synapse Analytics
G. Umbenennen einer Spalte
Im folgenden Beispiel wird die c1
Spalte in der table1
Tabelle col1
in .
Hinweis
Dieses Azure Synapse Analytics-Feature befindet sich weiterhin in der Vorschau für dedizierte SQL-Pools und ist derzeit nur für Objekte im dbo
Schema verfügbar.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Umbenennen eines Objekts
Im folgenden Beispiel wird die Tabelle dbo.table1
mithilfe des OBJECT
Typs in dbo.table2
".
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';