sp_rename (języka Transact-SQL)
Zmienia nazwę obiektu użytkownika utworzone w bieżącej bazie danych.Ten obiekt może być tabela, indeksu, kolumna, typ danych alias lub Microsoft .NET Framework runtime (CLR) języka wspólnego typ zdefiniowany przez użytkownika.
Przestroga |
---|
Zmiana część nazwy obiektu można podzielić skryptów i procedur przechowywanych.Zaleca się, że ta instrukcja nie jest używany do zmiany nazwy procedur przechowywanych, wyzwalaczy, funkcji zdefiniowanych przez użytkownika lub widoki; Upuść obiekt, a ponownie pod nową nazwą. |
Składnia
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Argumenty
[ @ NazwaObk = ] 'object_name"
Jest bieżąca nazwa kwalifikowana lub nonqualified typ danych lub obiektu użytkownika.Jeśli obiekt ma być zmieniona jest kolumna w tabela object_name musi być w postaci table.column lub schema.table.column.Jeśli obiekt ma być zmieniona jest indeks, object_name musi być w postaci table.index lub schema.table.index.Znaki cudzysłowu są tylko niezbędne, jeśli określony obiekt kwalifikowaną.Jeśli podana jest w pełni kwalifikowana nazwa, łącznie z nazwą bazy danych, nazwa bazy danych musi być nazwą bieżącej bazy danych.object_namejest nvarchar(776), z braku domyślne.
[ @ newname = ] 'new_name"
To nowa nazwa dla określonego obiektu.new_namemusi być nazwą jednej części i muszą spełniać zasady identyfikatorów.newname jest sysname, z braku domyślne.Ostrzeżenie
Nazwy wyzwalacza nie może rozpoczynać się # lub ##.
[ @ objtype = ] 'object_type"
Jest zmieniana typu obiektu.object_typejest varchar(13), domyślna wartość NULL, i może być jedną z tych wartości.Wartość
Opis
COLUMN
kolumna ma być zmieniona.
DATABASE
Bazie zdefiniowane przez użytkownika.Ten typ obiektu jest wymagany przy zmianie nazwy bazy danych.
INDEX
Indeks zdefiniowany przez użytkownika.
OBJECT
element typu śledzone w sys.objects.Na przykład OBJECT może zostać wykorzystana do zmiany nazwy obiektów w tym bez ograniczeń (klucz podstawowy i unikatowe wyboru klucza OBCEGO), tabele użytkowników i zasady.
USERDATATYPE
Typ danychalias lub typów zdefiniowanych przez użytkownika CLR dodane przez wykonywanie Utworzyć typ lub sp_addtype.
Wartości kodów powrotnych
0 (sukces) lub liczbę różną od zera (błąd)
Uwagi
Można zmienić nazwę obiektu lub typ danych w bieżącej bazie danych tylko.Nie można zmienić nazwy większości typów danych i obiektów systemu.
sp_renamew każdym przypadku, gdy została zmieniona nazwa ograniczenia na klucz podstawowy lub unikatowe automatycznie zmienia nazwę indeksu.Jeżeli zmieniono nazwę indeksu jest związany ograniczenie klucza podstawowego, ograniczenie klucza podstawowego jest automatycznie zmieniana przez sp_rename.
sp_renamemożna zmienić nazwy indeksów XML podstawowego i pomocniczego.
Zmiana nazwy procedura składowana, funkcja, widok lub wyzwalacz nie zmieni nazwę nazwę obiektu w definition kolumna sys.sql_modules katalogu widoku.Dlatego zaleca się, że sp_rename nie można zmienić nazwy tych typów obiektów.Upuść, a ponowne utworzenie obiektu z nową nazwą.
Zmiana nazwy obiektu, takie jak tabela lub kolumna nie będzie automatycznie zmienić odwołania do tego obiektu.Należy zmodyfikować wszystkie obiekty, które odwołują się ręcznie zmieniono nazwę obiektu.Na przykład jeśli zmiana nazwykolumna tabelai odwołanie do kolumna w wyzwalacz, należy zmodyfikować wyzwalacza, aby odzwierciedlały nową nazwę kolumna . Użyciesys.sql_expression_dependencies do listy zależności obiektu przed zmianą nazwy.
Uprawnienia
Aby zmienić nazwę obiektów, kolumn i indeksy, wymaga ZMIEŃ uprawnienia dla obiektu.Aby zmienić typy użytkowników wymaga uprawnienia kontroli typu.Aby zmienić nazwę bazy danych, wymaga członkostwa w sysadmin lub dbcreator stałej ról serwera
Przykłady
A.Zmiana nazwy tabela
Poniższy przykład zmienia nazwę SalesTerritory tabela do SalesTerr w Sales schematu.
USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B.Zmiana nazwy kolumna
Poniższy przykład zmienia nazwę TerritoryID kolumna w SalesTerritory tabela do TerrID.
USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C.Zmiana nazwy indeksu
Poniższy przykład zmienia nazwę IX_ProductVendor_VendorID indeks, aby IX_VendorID.
USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D.Zmiana nazwy typu danych alias
Poniższy przykład zmienia nazwę Phone alias typ danych do Telephone.
USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO