Freigeben über


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.

ms188351.Caution(de-de,SQL.90).gifVorsicht:
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.

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 Spalte in einer Tabelle handelt, muss object_name in der Form table.column angegeben werden. Wenn es sich bei dem umzubenennenden Objekt um einen Index handelt, muss object_namein der Form 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 Standard.

[ @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 Standard.

ms188351.note(de-de,SQL.90).gifHinweis:
Namen von Triggern können nicht mit # oder ## beginnen.

[ @objtype = ] 'object_type'

Der umzubenennende Objekttyp. object_type ist vom Datentyp varchar(13); der Standard 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 neu mit dem neuen Namen.

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 ändern, sodass er den neuen Spaltennamen wiedergibt. Verwenden Sie sys.sql_dependencies, um Abhängigkeiten von dem Objekt 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

Im folgenden Beispiel wird die SalesTerritory-Tabelle in SalesTerr umbenannt.

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

Siehe auch

Verweis

sys.sql_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005