Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
koncový bod azure Synapse Analytics
SQL Analytics v Microsoft Fabric
Warehouse v Microsoft Fabric
Změní název uživatelem vytvořeného objektu v aktuální databázi. Tento objekt může být tabulka, index, sloupec, datový typ aliasu nebo Microsoft.
Uživatelem definovaný typ modulu CLR (Common Language Runtime) rozhraní .NET Framework
Důležité
Některé systémové objekty a syntaxe Transact-SQL nejsou podporované v bezserverových fondech SQL ve službě Azure Synapse Analytics, včetně tohoto článku. Další informace najdete v podpoře T-SQL.
Upozornění
Změna jakékoli části názvu objektu může přerušit skripty a uložené procedury. Tento příkaz doporučujeme nepoužívat k přejmenování uložených procedur, triggerů, uživatelem definovaných funkcí nebo zobrazení; místo toho odstraňte objekt a znovu ho vytvořte s novým názvem.
Syntaxe
Syntaxe pro sp_rename
SQL Server a Azure SQL Database:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Syntaxe pro sp_rename
(Preview) ve službě Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Syntaxe pro sp_rename
Microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumenty
[ @objname = ] 'object_name'
Aktuální kvalifikovaný nebo nekvalifikovaný název objektu uživatele nebo datového typu. Pokud je objekt, který se má přejmenovat, sloupec v tabulce, object_name musí být ve formuláři table.column nebo schema.table.column. Pokud je objekt, který chcete přejmenovat, index, object_name musí být ve formátu table.index nebo schema.table.index. Pokud je objekt, který chcete přejmenovat, omezení, object_name musí být ve formuláři schema.constraint.
Uvozovky jsou nezbytné pouze v případě, že je zadán kvalifikovaný objekt. Pokud je zadaný plně kvalifikovaný název, včetně názvu databáze, musí být název aktuální databáze. object_name je nvarchar(776) bez výchozího nastavení.
[ @newname = ] 'new_name'
Nový název zadaného objektu. new_name musí být název jedné části a musí dodržovat pravidla pro identifikátory. newname je sysname bez výchozího nastavení.
Názvy triggerů nemůžou začínat # nebo ##.
Platí pro Sklad v Microsoft Fabric:
- Názvy schémat nemohou obsahovat
/
ani\
končit písmenem.
. - Názvy tabulek nemůžou obsahovat
/
ani\
končit tečkou.
.
[ @objtype = ] 'object_type'
Typ objektu, který se přejmenuje.
object_type je varchar(13) s výchozím nastavením NULL
a může být jednou z těchto hodnot.
Hodnota | Popis |
---|---|
COLUMN |
Sloupec, který se má přejmenovat. |
DATABASE |
Uživatelsky definovaná databáze. Tento typ objektu se vyžaduje při přejmenování databáze. |
INDEX |
Index definovaný uživatelem. Přejmenování indexu pomocí statistiky také automaticky přejmenuje statistiky. |
OBJECT |
Položka typu sledovaného v sys.objects. Objekt lze například použít k přejmenování objektů, včetně omezení (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), uživatelských tabulek, sloupců, uložených procedur, vložených funkcí s hodnotami tabulky, funkcí s hodnotou tabulky a pravidel. |
STATISTICS |
Platí pro: SQL Server 2012 (11.x) a novější a Azure SQL Database. Statistiky vytvořené explicitně uživatelem nebo vytvořené implicitně s indexem Přejmenování statistik indexu automaticky přejmenuje také index. |
USERDATATYPE |
Uživatelem definovaný typ CLR přidaný spuštěním příkazu CREATE TYPE nebo sp_addtype. |
platí pro: Azure Synapse Analytics
- Ve
sp_rename
verzi Preview pro Azure Synapse Analytics je povinná hodnota určující, že typ objektu, který se má přejmenovat,COLUMN
je sloupec a musí být vždy zahrnut dosp_rename
příkazu. Sloupec lze přejmenovat pouze v případě, že se nejedná o distribuční sloupec.sp_rename
lze použít pouze k přejmenování objektuCOLUMN
uživatele.
Platí pro: Microsoft Fabric
- V
sp_rename
případě skladu v Microsoft FabricOBJECT
je jediná podporovaná hodnota pro @objtype. - V
sp_rename
případě koncového bodu analýzy SQL v Microsoft FabricOBJECT
je jediná podporovaná hodnota pro @objtype. Tabulky a sloupce nelze přejmenovat.
Hodnoty návratového kódu
0
(úspěch) nebo nenulové číslo (selhání).
Poznámky
Platí pro SQL Server (všechny podporované verze) a Azure SQL Database:
sp_rename
automaticky přejmenuje přidružený index při přejmenování primárního klíče nebo jedinečného omezení. Pokud je přejmenovaný index svázaný s omezením PRIMÁRNÍHO KLÍČE, omezení PRIMÁRNÍHO KLÍČE se automaticky přejmenuje také nasp_rename
.sp_rename
lze použít k přejmenování primárního a sekundárního indexu XML.Přejmenování uložené procedury, funkce, zobrazení nebo triggeru nezmění název odpovídajícího objektu ve sloupci definice zobrazení katalogu sys.sql_modules nebo získané pomocí integrované funkce OBJECT_DEFINITION . Proto doporučujeme, abyste
sp_rename
tyto typy objektů nepřejmenovali. Místo toho odstraňte a znovu vytvořte objekt s novým názvem.
Platí pro SQL Server (všechny podporované verze), Azure SQL Database a Azure Synapse Analytics:
Přejmenování objektu, jako je tabulka nebo sloupec, automaticky nepřejmenuje odkazy na tento objekt. Je nutné upravit všechny objekty, které odkazují na přejmenovaný objekt ručně. Pokud například přejmenujete sloupec tabulky a na tento sloupec se odkazuje v triggeru, musíte aktivační událost upravit tak, aby odrážela název nového sloupce. Pomocí sys.sql_expression_dependencies vypsat závislosti na objektu před jeho přejmenováním.
Přejmenování sloupce automaticky neaktualizuje metadata pro žádné objekty, které z této tabulky vyberou všechny sloupce (pomocí ).
*
Pokud například přejmenujete sloupec tabulky a na tento sloupec odkazuje jiné než schéma vázané zobrazení nebo funkce, která SELECTs všechny sloupce (pomocí tohoto*
sloupce), metadata pro zobrazení nebo funkci budou nadále odrážet původní název sloupce. Aktualizujte metadata pomocí sp_refreshsqlmodule nebo sp_refreshview.Název objektu nebo datového typu můžete změnit pouze v aktuální databázi. Názvy většiny systémových datových typů a systémových objektů nelze změnit.
Pokud pro nový název použijete více než 128 znaků, použijí se pouze prvních 128 znaků a zbytek se zkrátí.
Platí pro Azure Synapse Analytics:
- Ve službě Azure Synapse Analytics
sp_rename
je ve verzi Preview pro vyhrazené fondy SQL.
Dovolení
Chcete-li přejmenovat objekty, sloupce a indexy, vyžaduje oprávnění ALTER k objektu. Chcete-li přejmenovat typy uživatelů, vyžaduje u tohoto typu oprávnění CONTROL. Pokud chcete přejmenovat databázi, vyžaduje členství v pevných rolích serveru sysadmin nebo dbcreator . K přejmenování tabulky registru je vyžadováno oprávnění ALTER LEDGER.
Příklady
A. Přejmenování tabulky
Následující příklad přejmenuje tabulku SalesTerritory
na SalesTerr
ve schématu Sales
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Přejmenování sloupce
Následující příklad přejmenuje TerritoryID
sloupec v SalesTerritory
tabulce na TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Přejmenování indexu
Následující příklad přejmenuje IX_ProductVendor_VendorID
index na IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. Přejmenování datového typu aliasu
Následující příklad přejmenuje datový typ aliasu Phone
na Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Přejmenování omezení
Následující příklady přejmenují omezení PRIMÁRNÍHO KLÍČE, omezení CHECK a omezení CIZÍHO KLÍČE. Při přejmenování omezení musí být zadáno schéma, do kterého omezení patří.
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. Přejmenování statistik
Následující příklad vytvoří objekt statistiky pojmenovaný contactMail1
a pak přejmenuje statistiku NewContact
pomocí .sp_rename
Při přejmenování statistiky musí být objekt zadán ve formátu "schema.table.statistics_name".
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Příklady: Azure Synapse Analytics
G. Přejmenování sloupce
Následující příklad přejmenuje c1
sloupec v table1
tabulce na col1
.
Poznámka:
Tato funkce Azure Synapse Analytics je stále ve verzi Preview pro vyhrazené fondy SQL a je aktuálně dostupná jenom pro objekty ve schématu dbo
.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Přejmenování objektu
Následující příklad přejmenuje tabulku dbo.table1
na dbo.table2
, pomocí OBJECT
typu.
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';
Související obsah
- sys.sql_expression_dependencies (Transact-SQL)
- sys.sql_modules (Transact-SQL)
- uložené procedury systému (Transact-SQL)
- uložené procedury databázového stroje (Transact-SQL)