sp_rename (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure Synapse Analytics

Ändert den Namen eines vom Benutzer erstellten Objekts in der aktuellen Datenbank. Bei diesem Objekt kann es sich um einen Tabellen-, Index-, Spalten-, Alias- oder Microsoft-Datentyp handeln.

.NET Framework benutzerdefinierten ClR-Typ (Common Language Runtime).

Hinweis

In Azure Synapse Analytics befindet sich in der Vorschau für dedizierte SQL-Pools und kann nur verwendet werden, sp_rename um eine COLUMN in einem Benutzerobjekt umzubenennen.

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. Es ist empfehlenswert, diese Anweisung nicht zum Umbenennen von gespeicherten Prozeduren, Triggern, benutzerdefinierten Funktionen oder Sichten zu verwenden. Löschen Sie stattdessen das Objekt, und erstellen Sie es neu mit dem neuen Namen.

Transact-SQL-Syntaxkonventionen

Syntax

Syntax für sp_rename in 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'

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 im Format table.column oder schema.table.column vorliegen. Wenn das umzubenennte Objekt ein Index ist, muss object_name im Format table.index oder schema.table.index vorliegen. Wenn das umzubenennte Objekt eine Einschränkung ist, muss object_name im Format schema.constraint vorliegen.

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

[ @newname = ] 'new_name'

Der neue Name für das angegebene Objekt. new_name muss ein einteiliger Name sein und den Regeln für Bezeichner entsprechen. newname ist sysname, ohne Standardwert.

Hinweis

Namen von Triggern können nicht mit # oder ## beginnen.

[ @objtype = ] 'object_type'

Der Typ des Objekts, das umbenannt wird. object_type ist varchar(13) mit dem Standardwert NULL und kann einer dieser Werte sein.

Wert BESCHREIBUNG
COLUMN 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, das 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.

[ @objtype = ] 'COLUMN'

Gilt für: Azure Synapse Analytics

In sp_rename (Vorschau) für Azure Synapse Analytics ist COLUMN ein obligatorischer Parameter, der angibt, dass der umzubenennende Objekttyp eine Spalte ist. Es handelt sich um einen varchar(13) ohne Standardwert und muss immer in der sp_rename (Vorschau)-Anweisung enthalten sein. Eine Spalte kann nur umbenannt werden, wenn es sich nicht um eine Verteilungsspalte handelt.

Rückgabecodewerte

0 (Erfolg) oder eine Zahl ungleich Null (Fehler)

Bemerkungen

Gilt für SQL Server (alle unterstützten Versionen) und Azure SQL-Datenbank:

  • sp_rename sorgt dafür, dass beim Umbenennen einer PRIMARY KEY- oder UNIQUE-Einschränkung automatisch auch der zugehörige Index umbenannt wird. Wenn ein umbenannter Index an eine PRIMARY KEY-Einschränkung gebunden ist, wird die PRIMARY KEY-Einschränkung auch automatisch von sp_renameumbenannt.

  • sp_rename kann zum Umbenennen von primären und sekundären XML-Indizes verwendet werden.

  • Das Umbenennen einer gespeicherten Prozedur, Funktion, Sicht oder trigger ändert den Namen des entsprechenden Objekts weder in der Definitionsspalte der sys.sql_modules Katalogsicht noch mithilfe der integrierten funktion OBJECT_DEFINITION abgerufen. Daher wird empfohlen, diese sp_rename 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 Database und Azure Synapse Analytics:

  • Durch das Umbenennen eines Objekts, z. B. 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 mehr als 128 Zeichen für den neuen Namen verwenden, werden nur die ersten 128 Zeichen verwendet, und der Rest wird abgeschnitten.

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 Ledgertabelle 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 in TerrIDumbenannt.

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

Im folgenden Beispiel wird ein Statistikobjekt namens contactMail1 erstellt, und anschließend wird die Statistik mithilfe sp_renamevon in NewContact umbenannt. 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 in col1umbenannt.

Hinweis

Dieses Azure Synapse Analytics-Feature befindet sich noch 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

Weitere Informationen