sp_rename (Transact-SQL)

Ändert den Namen eines vom Benutzer erstellten Objekts in der aktuellen Datenbank. Bei diesem Objekt kann es sich um eine Tabelle, einen Index, eine Spalte, einen Aliasdatentyp oder einen CLR-benutzerdefinierten Typ (Common Language Runtime) von Microsoft.NET Framework handeln.

VorsichtshinweisVorsicht

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 mit dem neuen Namen neu.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @objname = ] 'object_name'
    Der aktuelle qualifizierte oder nicht qualifizierte Name des Benutzerobjekts oder Datentyps. Wenn es sich bei dem umzubenennenden Objekt um eine Tabellenspalte handelt, muss object_name in der Form table.column oder in der Form schema.table.column angegeben werden. Handelt es sich bei dem umzubenennenden Objekt um einen Index, muss object_name in der Form table.index oder in der Form schema.table.index angegeben werden.

    Anführungszeichen sind nur dann notwendig, wenn ein qualifiziertes Objekt angegeben wird. Wird ein vollqualifizierter Name, einschließlich eines Datenbanknamens, bereitgestellt, muss es sich bei dem Datenbanknamen um den Namen der aktuellen Datenbank handeln. object_name ist vom Datentyp nvarchar(776) und hat keinen 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 vom Datentyp sysname und hat keinen Standardwert.

    HinweisHinweis

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

  • [ @objtype = ] 'object_type'
    Der umzubenennende Objekttyp. object_type ist vom Datentyp varchar(13); der Standardwert ist NULL. Die folgenden Werte sind möglich.

    Wert

    Beschreibung

    COLUMN

    Eine umzubenennende Spalte.

    DATABASE

    Eine benutzerdefinierte Datenbank. Dieser Objekttyp ist erforderlich, wenn Sie eine Datenbank umbenennen.

    INDEX

    Ein benutzerdefinierter Index.

    OBJECT

    Ein Element eines in sys.objects nachverfolgten Objekts. Beispielsweise könnte OBJECT zum Umbenennen von Objekten mit Einschränkungen (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), Benutzertabellen und Regeln verwendet werden.

    USERDATATYPE

    Ein Aliasdatentyp oder CLR-benutzerdefinierter Typ, der bzw. die durch Ausführen von CREATE TYPE oder sp_addtype hinzugefügt wird bzw. werden.

Rückgabecodewerte

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

Hinweise

Sie können Objekte und Datentypen nur in der aktuellen Datenbank umbenennen. Die Namen der meisten Systemdatentypen und -objekte können nicht geändert werden.

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 auch die PRIMARY KEY-Einschränkung automatisch von sp_rename umbenannt.

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

Durch das Umbenennen einer gespeicherten Prozedur, einer Funktion, einer Sicht oder eines Triggers wird nicht der entsprechende Objektname in der definition-Spalte der Katalogsicht sys.sql_modules geändert. Daher ist es empfehlenswert, sp_rename nicht zum Umbenennen dieser Objekttypen zu verwenden. Löschen Sie stattdessen das Objekt, und erstellen Sie es mit dem neuen Namen neu.

Beim Umbenennen eines Objekts, wie z. B. einer Tabelle oder Spalte, werden Verweise auf das 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 gemäß dem neuen Spaltennamen ändern. Verwenden Sie sys.sql_expression_dependencies, um Abhängigkeiten des Objekts aufzulisten, bevor Sie es umbenennen.

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. Zum Umbenennen einer Datenbank ist die Mitgliedschaft in der festen Serverrolle sysadmin oder dbcreator erforderlich.

Beispiele

A. Umbenennen einer Tabelle

Das folgende Beispiel benennt die SalesTerritory-Tabelle im Schema Sales in SalesTerr um.

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

B. Umbenennen einer Spalte

Im folgenden Beispiel wird die TerritoryID-Spalte in der SalesTerritory -Tabelle in TerrID umbenannt.

USE AdventureWorks;
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 AdventureWorks;
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 AdventureWorks;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO