Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Ändrar namnet på ett användarskapade objekt i den aktuella databasen. Det här objektet kan vara en tabell, ett index, en kolumn, en aliasdatatyp eller microsoft
Användardefinierad typ av .NET Framework common language runtime (CLR).
Viktigt!
Vissa systemobjekt och Transact-SQL syntax stöds inte i serverlösa SQL-pooler i Azure Synapse Analytics, inklusive den här artikeln. Mer information finns i T-SQL-stöd.
Försiktighet
Om du ändrar en del av ett objektnamn kan skript och lagrade procedurer brytas. Vi rekommenderar att du inte använder den här instruktionen för att byta namn på lagrade procedurer, utlösare, användardefinierade funktioner eller vyer. i stället släpper du objektet och skapar det igen med det nya namnet.
Transact-SQL syntaxkonventioner
Syntax
Syntax för sp_rename
i SQL Server och Azure SQL Database:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Syntax för sp_rename
(förhandsversion) i Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Syntax för sp_rename
i Microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumentpunkter
[ @objname = ] "object_name"
Det aktuella kvalificerade eller icke-kvalificerade namnet på användarobjektet eller datatypen. Om objektet som ska byta namn är en kolumn i en tabell måste object_name finnas i kolumnen form table.column eller schema.table.column. Om objektet som ska byta namn är ett index måste object_name finnas i formuläret table.index eller schema.table.index. Om det objekt som ska byta namn är en begränsning måste object_name finnas i formuläret schema.constraint.
Citattecken är bara nödvändiga om ett kvalificerat objekt har angetts. Om ett fullständigt kvalificerat namn, inklusive ett databasnamn, anges måste databasnamnet vara namnet på den aktuella databasen. object_name är nvarchar(776), utan standard.
[ @newname = ] "new_name"
Det nya namnet på det angivna objektet. new_name måste vara ett endelsnamn och måste följa reglerna för identifierare. newname är sysname, utan standard.
Utlösarnamn kan inte börja med # eller ##.
Gäller för Informationslager i Microsoft Fabric:
- Schemanamn får inte innehålla
/
eller\
sluta med en.
. - Tabellnamn får inte innehålla
/
eller\
sluta med en.
.
[ @objtype = ] "object_type"
Den typ av objekt som byts namn.
object_type är varchar(13), med standardvärdet NULL
, och kan vara ett av dessa värden.
Värde | Beskrivning |
---|---|
COLUMN |
En kolumn som ska byta namn. |
DATABASE |
En användardefinierad databas. Den här objekttypen krävs när du byter namn på en databas. |
INDEX |
Ett användardefinierat index. Om du byter namn på ett index med statistik byter du även automatiskt namn på statistiken. |
OBJECT |
Ett objekt av en typ som spåras i sys.objects. Object kan till exempel användas för att byta namn på objekt, inklusive begränsningar (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), användartabeller, kolumner, lagrade procedurer, infogade tabellvärdesfunktioner, tabellvärdesfunktioner och regler. |
STATISTICS |
Gäller för: SQL Server 2012 (11.x) och senare och Azure SQL Database. Statistik som skapats explicit av en användare eller skapats implicit med ett index. Om du byter namn på statistiken för ett index byter du även automatiskt namn på indexet. |
USERDATATYPE |
En CLR-användardefinierad typ som lagts till genom att köra CREATE TYPE eller sp_addtype. |
gäller för: Azure Synapse Analytics
- I
sp_rename
(förhandsversion) för Azure Synapse AnalyticsCOLUMN
är ett obligatoriskt värde som anger att objekttypen som ska byta namn är en kolumn och alltid måste ingå i -instruktionensp_rename
. En kolumn kan bara byta namn om den inte är en distributionskolumn.sp_rename
kan endast användas för att byta namn på enCOLUMN
i ett användarobjekt.
Gäller för: Microsoft Fabric
- I
sp_rename
för lagret i Microsoft FabricOBJECT
är det enda värde som stöds för @objtype. - För
sp_rename
SQL-analysslutpunkten i Microsoft FabricOBJECT
är det enda värde som stöds för @objtype. Det går inte att byta namn på tabeller och kolumner.
Returnera kodvärden
0
(lyckades) eller ett icke-nolltal (fel).
Anmärkningar
Gäller för SQL Server (alla versioner som stöds) och Azure SQL Database:
sp_rename
byter automatiskt namn på det associerade indexet när en PRIMÄRNYCKEL eller UNIK-begränsning byts namn. Om ett omdöpt index är kopplat till en PRIMARY KEY-begränsning byts även villkoret PRIMÄRNYCKEL automatiskt om avsp_rename
.sp_rename
kan användas för att byta namn på primära och sekundära XML-index.Om du byter namn på en lagrad procedur, funktion, vy eller utlösare ändras inte namnet på motsvarande objekt, antingen i definitionskolumnen i katalogvyn sys.sql_modules eller hämtas med hjälp av den OBJECT_DEFINITION inbyggda funktionen. Därför rekommenderar vi att
sp_rename
inte användas för att byta namn på dessa objekttyper. Släpp i stället och återskapa objektet med det nya namnet.
Gäller för SQL Server (alla versioner som stöds), Azure SQL Database och Azure Synapse Analytics:
Om du byter namn på ett objekt, till exempel en tabell eller kolumn, byter du inte automatiskt namn på referenser till objektet. Du måste ändra alla objekt som refererar till det omdöpta objektet manuellt. Om du till exempel byter namn på en tabellkolumn och den kolumnen refereras till i en utlösare måste du ändra utlösaren så att den återspeglar det nya kolumnnamnet. Använd sys.sql_expression_dependencies för att lista beroenden för objektet innan du byter namn på det.
Om du byter namn på en kolumn uppdateras inte metadata automatiskt för objekt som VÄLJER alla kolumner (med hjälp av ) från den
*
tabellen. Om du till exempel byter namn på en tabellkolumn och den kolumnen refereras till av en icke-schemabunden vy eller funktion som SELECTs alla kolumner (med hjälp av*
), fortsätter metadata för vyn eller funktionen att återspegla det ursprungliga kolumnnamnet. Uppdatera metadata med hjälp av sp_refreshsqlmodule eller sp_refreshview.Du kan bara ändra namnet på ett objekt eller en datatyp i den aktuella databasen. Namnen på de flesta systemdatatyper och systemobjekt kan inte ändras.
Om du använder fler än 128 tecken för det nya namnet används endast de första 128 tecknen och resten trunkeras.
Gäller för Azure Synapse Analytics:
- I Azure Synapse Analytics
sp_rename
finns i förhandsversion för dedikerade SQL-pooler.
Behörigheter
Om du vill byta namn på objekt, kolumner och index kräver du ALTER-behörighet för objektet. Om du vill byta namn på användartyper kräver kontrollbehörighet för typen. Om du vill byta namn på en databas måste du ha medlemskap i de fasta serverrollerna sysadmin eller dbcreator . Om du vill byta namn på en transaktionsregistertabell krävs ALTER LEDGER-behörighet.
Exempel
A. Byt namn på en tabell
I följande exempel byter du namn på tabellen SalesTerritory
till SalesTerr
i Sales
-schemat.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Byt namn på en kolumn
I följande exempel byter kolumnen i SalesTerritory
tabellen namn TerritoryID
till TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Byt namn på ett index
I följande exempel byter indexet namn till IX_ProductVendor_VendorID
IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. Byt namn på en aliasdatatyp
I följande exempel byter du namn på Phone
aliasdatatypen till Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Ändra namn på begränsningar
I följande exempel byter du namn på en PRIMARY KEY-begränsning, en CHECK-begränsning och en FOREIGN KEY-begränsning. När du byter namn på en begränsning måste det schema som villkoret tillhör anges.
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. Byt namn på statistik
Följande exempel skapar ett statistikobjekt med namnet contactMail1
och byter sedan namn på statistiken till NewContact
med hjälp sp_rename
av . När du byter namn på statistik måste objektet anges i formatet "schema.table.statistics_name".
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Exempel: Azure Synapse Analytics
G. Byt namn på en kolumn
I följande exempel byter kolumnen i table1
tabellen namn c1
till col1
.
Anmärkning
Den här Azure Synapse Analytics-funktionen är fortfarande i förhandsversion för dedikerade SQL-pooler och är för närvarande endast tillgänglig för objekt i dbo
schemat.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Byt namn på ett objekt
I följande exempel byter du namn på tabellen dbo.table1
till dbo.table2
, med hjälp av OBJECT
typen .
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';