Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
punkt końcowy usługi Azure Synapse Analytics
SQL Analytics w usłudze Microsoft Fabric
Warehouse w usłudze Microsoft Fabric
Zmienia nazwę obiektu utworzonego przez użytkownika w bieżącej bazie danych. Ten obiekt może być tabelą, indeksem, kolumną, aliasem lub firmą Microsoft
Typ środowiska uruchomieniowego języka wspólnego programu .NET Framework (CLR) zdefiniowany przez użytkownika.
Ważne
Niektóre obiekty systemowe i składnia Transact-SQL nie są obsługiwane w bezserwerowych pulach SQL w usłudze Azure Synapse Analytics, w tym w tym tym artykule. Aby uzyskać więcej informacji, odwiedź stronę Obsługa języka T-SQL.
Ostrożność
Zmiana dowolnej części nazwy obiektu może uszkodzić skrypty i procedury składowane. Nie zalecamy używania tej instrukcji do zmieniania nazw procedur składowanych, wyzwalaczy, funkcji zdefiniowanych przez użytkownika ani widoków; Zamiast tego upuść obiekt i utwórz go ponownie przy użyciu nowej nazwy.
Transact-SQL konwencje składni
Składnia
Składnia dla sp_rename
programu SQL Server i usługi Azure SQL Database:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Składnia dla sp_rename
(wersja zapoznawcza) w usłudze Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Składnia programu sp_rename
w usłudze Microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumenty (w programowaniu)
[ @objname = ] 'object_name'
Bieżąca kwalifikowana lub niekwalifikowana nazwa obiektu użytkownika lub typu danych. Jeśli obiekt, który ma zostać zmieniony, jest kolumną w tabeli, object_name musi znajdować się w kolumnie table.column lub schema.table.column. Jeśli obiekt, który ma zostać zmieniony, jest indeksem, object_name musi znajdować się w pliku table.index lub schema.table.index. Jeśli nazwa obiektu, który ma zostać zmieniona, jest ograniczeniem, object_name musi znajdować się w formularzu schema.constraint.
Cudzysłowy są niezbędne tylko w przypadku określenia kwalifikowanego obiektu. Jeśli podana jest w pełni kwalifikowana nazwa, w tym nazwa bazy danych, nazwa bazy danych musi być nazwą bieżącej bazy danych. object_name to nvarchar(776), bez wartości domyślnej.
[ @newname = ] 'new_name'
Nowa nazwa określonego obiektu. new_name musi być nazwą jednoczęściową i musi być zgodna z regułami dotyczącymi identyfikatorów. newname to nazwa systemu bez wartości domyślnej.
Nazwy wyzwalaczy nie mogą rozpoczynać się od #ani ##.
Dotyczy Magazyn w usłudze Microsoft Fabric:
- Nazwy schematów nie mogą zawierać
/
ani\
kończyć się ciągiem.
. - Nazwy tabel nie mogą zawierać
/
ani\
kończyć się symbolem.
.
[ @objtype = ] 'object_type'
Typ obiektu, który jest zmieniany.
object_type jest varchar(13), z wartością domyślną NULL
, i może być jedną z tych wartości.
Wartość | Opis |
---|---|
COLUMN |
Nazwa kolumny, która ma zostać zmieniona. |
DATABASE |
Baza danych zdefiniowana przez użytkownika. Ten typ obiektu jest wymagany podczas zmieniania nazwy bazy danych. |
INDEX |
Indeks zdefiniowany przez użytkownika. Zmiana nazwy indeksu ze statystykami również automatycznie zmienia nazwę statystyk. |
OBJECT |
Element typu śledzony w plikach sys.objects. Na przykład obiekt może służyć do zmieniania nazw obiektów, w tym ograniczeń (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), tabel użytkowników, kolumn, procedur składowanych, wbudowanych funkcji wartości tabeli, funkcji wartości tabeli i reguł. |
STATISTICS |
Dotyczy: SQL Server 2012 (11.x) i nowsze oraz Azure SQL Database. Statystyki utworzone jawnie przez użytkownika lub utworzone niejawnie za pomocą indeksu. Zmiana nazwy statystyk indeksu powoduje również automatyczne zmianę nazwy indeksu. |
USERDATATYPE |
Typ zdefiniowany przez użytkownika środowiska CLR dodany przez wykonanie polecenia CREATE TYPE lub sp_addtype. |
Dotyczy: Azure Synapse Analytics
- W
sp_rename
(wersja zapoznawcza) dla usługi Azure Synapse Analytics jest obowiązkową wartością określającą,COLUMN
że typ obiektu do zmiany nazwy jest kolumną i zawsze musi być uwzględniony w instrukcjisp_rename
. Nazwę kolumny można zmienić tylko wtedy, gdy nie jest to kolumna dystrybucji.sp_rename
Można użyć tylko do zmiany nazwyCOLUMN
obiektu użytkownika.
Dotyczy: Microsoft Fabric
- W
sp_rename
przypadku magazynu w usłudze Microsoft FabricOBJECT
jest jedyną obsługiwaną wartością dla @objtype. - W
sp_rename
przypadku punktu końcowego analizy SQL w usłudze Microsoft FabricOBJECT
jest jedyną obsługiwaną wartością dla @objtype. Nie można zmienić nazwy tabel i kolumn.
Zwracanie wartości kodu
0
(powodzenie) lub liczba niezerowa (niepowodzenie).
Uwagi
Dotyczy Program SQL Server (wszystkie obsługiwane wersje) i usługa Azure SQL Database:
sp_rename
automatycznie zmienia nazwę skojarzonego indeksu za każdym razem, gdy zmienia się nazwa klucza podstawowego lub unikatowego ograniczenia. Jeśli zmieniona nazwa indeksu jest powiązana z ograniczeniem KLUCZA PODSTAWOWEgo, ograniczenie KLUCZA PODSTAWOWEgo również zostanie automatycznie zmienione przezsp_rename
.sp_rename
Można użyć do zmiany nazwy podstawowych i pomocniczych indeksów XML.Zmiana nazwy procedury składowanej, funkcji, widoku lub wyzwalacza nie spowoduje zmiany nazwy odpowiedniego obiektu w kolumnie definicji widoku katalogu sys.sql_modules lub uzyskanego przy użyciu wbudowanej funkcji OBJECT_DEFINITION . W związku z tym zalecamy, aby
sp_rename
nie używać ich do zmieniania nazw tych typów obiektów. Zamiast tego usuń i ponownie utwórz obiekt z jego nową nazwą.
Dotyczy SQL Server (wszystkie obsługiwane wersje), Azure SQL Database i Azure Synapse Analytics:
Zmiana nazwy obiektu, takiego jak tabela lub kolumna, nie spowoduje automatycznej zmiany nazwy odwołań do tego obiektu. Należy ręcznie zmodyfikować wszystkie obiekty odwołujące się do zmienionego obiektu. Jeśli na przykład zmienisz nazwę kolumny tabeli i ta kolumna jest przywołynięta w wyzwalaczu, musisz zmodyfikować wyzwalacz, aby odzwierciedlić nową nazwę kolumny. Użyj sys.sql_expression_dependencies, aby wyświetlić listę zależności od obiektu przed zmianą nazwy.
Zmiana nazwy kolumny nie powoduje automatycznej aktualizacji metadanych dla żadnych obiektów, które wybierają wszystkie kolumny (przy użyciu
*
kolumny ) z tej tabeli. Jeśli na przykład zmienisz nazwę kolumny tabeli i ta kolumna jest przywoływanych przez widok niezwiązany schematem lub funkcję, do której SELEKTuje wszystkie kolumny (przy użyciu*
), metadane widoku lub funkcji będą nadal odzwierciedlać oryginalną nazwę kolumny. Odśwież metadane przy użyciu sp_refreshsqlmodule lub sp_refreshview.Nazwę obiektu lub typu danych można zmienić tylko w bieżącej bazie danych. Nie można zmienić nazw większości typów danych systemowych i obiektów systemowych.
Jeśli używasz więcej niż 128 znaków dla nowej nazwy, używane są tylko pierwsze 128 znaków, a reszta zostanie obcięta.
Dotyczy Azure Synapse Analytics:
- W usłudze Azure Synapse Analytics
sp_rename
jest dostępna w wersji zapoznawczej dla dedykowanych pul SQL.
Uprawnienia
Aby zmienić nazwy obiektów, kolumn i indeksów, wymagane jest uprawnienie ALTER do obiektu. Aby zmienić nazwy typów użytkowników, wymaga uprawnień CONTROL dla typu. Aby zmienić nazwę bazy danych, wymaga członkostwa w stałych rolach serwera sysadmin lub dbcreator . Aby zmienić nazwę tabeli rejestru, wymagane jest uprawnienie ALTER LEDGER.
Przykłady
Odp. Zmienianie nazwy tabeli
W poniższym przykładzie zmieniono nazwę tabeli SalesTerritory
na SalesTerr
w schemacie Sales
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Zmienianie nazwy kolumny
Poniższy przykład zmienia nazwę TerritoryID
kolumny w tabeli na SalesTerritory
TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Zmienianie nazwy indeksu
Poniższy przykład zmienia nazwę indeksu na IX_ProductVendor_VendorID
IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. Zmienianie nazwy typu danych aliasu
Poniższy przykład zmienia nazwę typu danych aliasu Phone
na Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Zmienianie nazw ograniczeń
W poniższych przykładach zmieniono ograniczenie KLUCZA PODSTAWOWEgo, ograniczenie CHECK i ograniczenie KLUCZA OBCEgo. Podczas zmiany nazwy ograniczenia należy określić schemat, do którego należy ograniczenie.
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. Zmienianie nazwy statystyk
Poniższy przykład tworzy obiekt statystyki o nazwie contactMail1
, a następnie zmienia nazwę statystyki na NewContact
przy użyciu polecenia sp_rename
. Podczas zmieniania nazwy statystyk obiekt musi być określony w formacie "schema.table.statistics_name".
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Przykłady: Azure Synapse Analytics
G. Zmienianie nazwy kolumny
Poniższy przykład zmienia nazwę c1
kolumny w tabeli na table1
col1
.
Uwaga
Ta funkcja usługi Azure Synapse Analytics jest nadal dostępna w wersji zapoznawczej dla dedykowanych pul SQL i jest obecnie dostępna tylko dla obiektów w schemacie dbo
.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Zmienianie nazwy obiektu
Poniższy przykład zmienia nazwę tabeli dbo.table1
na dbo.table2
, używając OBJECT
typu .
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';
Powiązana zawartość
- sys.sql_expression_dependencies (Transact-SQL)
- sys.sql_modules (Transact-SQL)
- System procedur składowanych (Transact-SQL)
- procedury składowane aparatu bazy danych (Transact-SQL)