Sdílet prostřednictvím


sp_rename (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed Instancekoncový bod azure Synapse AnalyticsSQL Analytics v Microsoft FabricWarehouse 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.

Transact-SQL konvence syntaxe

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 NULLa 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 do sp_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í objektu COLUMN uživatele.

Platí pro: Microsoft Fabric

  • V sp_rename případě skladu v Microsoft Fabric OBJECT je jediná podporovaná hodnota pro @objtype.
  • V sp_rename případě koncového bodu analýzy SQL v Microsoft Fabric OBJECT 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é na sp_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';