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.
Vorsicht: |
---|
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
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.
Hinweis: |
---|
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)