Megosztás a következőn keresztül:


sp_rename (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbanWarehouse a Microsoft Fabricban

Módosítja egy felhasználó által létrehozott objektum nevét az aktuális adatbázisban. Ez az objektum lehet tábla, index, oszlop, alias adattípus vagy Microsoft

A .NET-keretrendszer általános nyelvi futtatókörnyezete (CLR) felhasználó által definiált típusa.

Fontos

Egyes rendszerobjektumok és Transact-SQL szintaxis nem támogatott az Azure Synapse Analytics kiszolgáló nélküli SQL-készleteiben, beleértve ezt a cikket is. További információ: T-SQL-támogatás.

Figyelmeztetés

Az objektumnév bármely részének módosítása megszakíthatja a szkripteket és a tárolt eljárásokat. Javasoljuk, hogy ne használja ezt az utasítást a tárolt eljárások, eseményindítók, felhasználó által definiált függvények vagy nézetek átnevezésére; ehelyett ejtse el az objektumot, és hozza létre újra az új névvel.

Transact-SQL szintaxis konvenciók

Szemantika

Szintaxis az sp_rename SQL Serverben és az Azure SQL Database-ben:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
    [ , [ @objtype = ] 'object_type' ]

sp_rename Az Azure Synapse Analytics (előzetes verzió) szintaxisa:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
    , [ @objtype = ] 'COLUMN'

Szintaxis a sp_rename Microsoft Fabricben:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
    [ , [ @objtype = ] 'OBJECT' ]

Érvek

[ @objname = ] 'object_name'

A felhasználói objektum vagy adattípus aktuális minősített vagy nem minősített neve. Ha az átnevezendő objektum egy tábla egyik oszlopa, object_name a table.column vagyschema.table.column űrlapban kell lennie. Ha az átnevezni kívánt objektum index, object_name a table.index vagy a schema.table.index űrlapon kell lennie. Ha az átnevezni kívánt objektum kényszer, object_name az űrlapséma.constraint fájlban kell lennie.

Idézőjelek csak minősített objektum megadása esetén szükségesek. Ha egy teljesen minősített név van megadva, beleértve az adatbázis nevét is, az adatbázis nevének kell lennie az aktuális adatbázis nevének. object_namenvarchar(776), alapértelmezés nélkül.

[ @newname = ] 'new_name'

A megadott objektum új neve. new_name egyrészes névnek kell lennie, és be kell tartania az azonosítókra vonatkozó szabályokat. A newnamea sysname, alapértelmezés nélkül.

Az eseményindítók nevei nem kezdődhetnek # vagy ## karakterrel.

A következőkre vonatkozik: Raktár a Microsoft Fabricben:

  • A sémanevek nem tartalmazhatnak / vagy \ végződhetnek ..
  • A táblanevek nem tartalmazhatnak / vagy \ végződhetnek ..

[ @objtype = ] 'object_type'

Az átnevezett objektum típusa. object_typea varchar(13), alapértelmezett értéke NULLpedig a fenti értékek egyike lehet.

Érték Leírás
COLUMN Átnevezendő oszlop.
DATABASE Felhasználó által definiált adatbázis. Az adatbázis átnevezésekor ez az objektumtípus szükséges.
INDEX Felhasználó által definiált index. Az indexek statisztikával való átnevezése szintén automatikusan átnevezi a statisztikákat.
OBJECT A sys.objectsban nyomon követett típusú elem. Az OBJECT például használható objektumok átnevezésére, beleértve a korlátozásokat (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), a felhasználói táblákat, az oszlopokat, a tárolt eljárásokat, a beágyazott táblaértékelt függvényeket, a táblaértékelt függvényeket és a szabályokat.
STATISTICS A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb verziók, valamint az Azure SQL Database.

A felhasználó által explicit módon létrehozott vagy indexel implicit módon létrehozott statisztikák. Az index statisztikáinak átnevezése automatikusan átnevezi az indexet is.
USERDATATYPE A CREATE TYPE vagy sp_addtype végrehajtásával hozzáadott, felhasználó által definiált CLR-típus.

A következővonatkozik: Azure Synapse Analytics

  • Az sp_rename Azure Synapse Analytics előzetes verziójában kötelező megadni, COLUMN hogy az átnevezendő objektumtípus egy oszlop legyen, és mindig szerepelnie kell az sp_rename utasításban. Egy oszlop csak akkor nevezhető át, ha nem terjesztési oszlop. sp_rename csak egy felhasználói objektum átnevezésére COLUMN használható.

A következőre vonatkozik: Microsoft Fabric

  • A sp_rename Microsoft Fabric OBJECT raktárában az egyetlen támogatott érték a @objtype.
  • A sp_rename Microsoft Fabric OBJECT SQL Analytics-végpontja esetében a @objtype egyetlen támogatott értéke. A táblák és oszlopok nem nevezhetők át.

Kódértékek visszaadása

0 (sikeres) vagy nem nulla számot (hiba).

Megjegyzések

A következőkre vonatkozik: SQL Server (az összes támogatott verzió) és az Azure SQL Database:

  • sp_rename automatikusan átnevezi a társított indexet, amikor egy ELSŐDLEGES KULCS vagy EGYEDI korlátozást átneveznek. Ha egy átnevezett index ELSŐDLEGES KULCS kényszerhez van kötve, az ELSŐDLEGES KULCS kényszert is automatikusan átnevezi a sp_renamerendszer.

  • sp_rename elsődleges és másodlagos XML-indexek átnevezésére használható.

  • A tárolt eljárás, függvény, nézet vagy eseményindító átnevezése nem változtatja meg a megfelelő objektum nevét sem a sys.sql_modules katalógusnézet definícióoszlopában, sem pedig a OBJECT_DEFINITION beépített függvény használatával beszerzett. Ezért javasoljuk, hogy sp_rename ne használja ezeket az objektumtípusokat. Ehelyett helyezze el és hozza létre újra az objektumot az új nevével.

A következőkre vonatkozik: SQL Server (az összes támogatott verzió), az Azure SQL Database és az Azure Synapse Analytics:

  • Ha átnevez egy objektumot, például egy táblát vagy oszlopot, az nem nevez át automatikusan az adott objektumra mutató hivatkozásokat. Manuálisan kell módosítania az átnevezett objektumra hivatkozó objektumokat. Ha például átnevez egy táblaoszlopot, és az oszlopra hivatkozik egy eseményindító, módosítania kell az eseményindítót, hogy tükrözze az új oszlop nevét. A sys.sql_expression_dependencies használatával listázhatja az objektum függőségeit az átnevezés előtt.

  • Az oszlopok átnevezése nem frissíti automatikusan azoknak az objektumoknak a metaadatait, amelyek a táblából kiválasztják az összes oszlopot (a *használatával). Ha például átnevez egy táblaoszlopot, és az oszlopra nem sémakötésű nézet vagy függvény hivatkozik, amely SELECTs az összes oszlopot (a *használatával), a nézet vagy függvény metaadatai továbbra is az eredeti oszlop nevét tükrözik. A metaadatok frissítése sp_refreshsqlmodule vagy sp_refreshviewhasználatával.

  • Egy objektum vagy adattípus nevét csak az aktuális adatbázisban módosíthatja. A legtöbb rendszeradattípus és rendszerobjektum neve nem módosítható.

  • Ha több mint 128 karaktert használ az új névhez, csak az első 128 karaktert használja a rendszer, a többit pedig csonkolja.

A következőkre vonatkozik: Azure Synapse Analytics:

  • Az Azure Synapse Analytics sp_rename előzetes verzióban érhető el dedikált SQL-készletekhez.

Engedélyek

Az objektumok, oszlopok és indexek átnevezéséhez alter engedély szükséges az objektumon. A felhasználótípusok átnevezéséhez CONTROL-engedély szükséges a típushoz. Az adatbázis átnevezéséhez a sysadmin vagy a dbcreator rögzített kiszolgálói szerepkörök tagságára van szükség. A főkönyvtáblák átnevezéséhez ALTER LEDGER-engedély szükséges.

Példák

Egy. Tábla átnevezése

Az alábbi példa átnevezi a SalesTerritory táblát SalesTerr a Sales sémában.

USE AdventureWorks2022;
GO

EXECUTE sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO

B. Oszlop átnevezése

Az alábbi példa átnevezi a TerritoryID tábla oszlopát a SalesTerritory következőre TerrID: .

USE AdventureWorks2022;
GO

EXECUTE sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

C. Index átnevezése

Az alábbi példa átnevezi az indexet a IX_ProductVendor_VendorID következőre IX_VendorID: .

USE AdventureWorks2022;
GO

EXECUTE sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO

D. Alias-adattípus átnevezése

Az alábbi példa átnevezi az Phone alias adattípusát a következőre Telephone: .

USE AdventureWorks2022;
GO

EXECUTE sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO

E. Kényszerek átnevezése

Az alábbi példák átneveznek egy ELSŐDLEGES KULCS kényszert, egy CHECK kényszert és egy KÜLFÖLDI KULCS kényszert. Kényszer átnevezésekor meg kell adni azt a sémát, amelyhez a kényszer tartozik.

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.
EXECUTE sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';
GO

-- Rename a check constraint.
EXECUTE sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';
GO

-- Rename a foreign key constraint.
EXECUTE 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. Statisztikák átnevezése

Az alábbi példa létrehoz egy elnevezett contactMail1 statisztikai objektumot, majd átnevezi a statisztikát NewContact a használatával sp_rename. A statisztikák átnevezésekor az objektumot "schema.table.statistics_name" formátumban kell megadni.

CREATE STATISTICS ContactMail1
    ON Person.Person(BusinessEntityID, EmailPromotion)
    WITH SAMPLE 5 PERCENT;

EXECUTE sp_rename 'Person.Person.ContactMail1', 'NewContact', 'Statistics';

Példák: Azure Synapse Analytics

G. Oszlop átnevezése

Az alábbi példa átnevezi a c1 tábla oszlopát a table1 következőre col1: .

Megjegyzés:

Ez az Azure Synapse Analytics-funkció továbbra is előzetes verzióban érhető el dedikált SQL-készletekhez, és jelenleg csak a dbo sémában lévő objektumokhoz érhető el.

CREATE TABLE table1 (c1 INT, c2 INT);

EXECUTE sp_rename 'table1.c1', 'col1', 'COLUMN';
GO

H. Objektum átnevezése

Az alábbi példa átnevezi a táblát dbo.table1dbo.table2a OBJECT típus használatával.

EXECUTE sp_rename
    @objname = 'dbo.table1',
    @newname = 'table2',
    @objtype = 'OBJECT';