Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Hiermee wijzigt u de naam van een door de gebruiker gemaakt object in de huidige database. Dit object kan een tabel, index, kolom, aliasgegevenstype of Microsoft zijn
Door de gebruiker gedefinieerd type .NET Framework Common Language Runtime (CLR).
Belangrijk
Sommige systeemobjecten en Transact-SQL syntaxis worden niet ondersteund in serverloze SQL-pools in Azure Synapse Analytics, waaronder dit artikel. Ga naar T-SQL-ondersteuning voor meer informatie.
Waarschuwing
Als u een deel van een objectnaam wijzigt, kunnen scripts en opgeslagen procedures worden onderbroken. U wordt aangeraden deze instructie niet te gebruiken om de naam van opgeslagen procedures, triggers, door de gebruiker gedefinieerde functies of weergaven te wijzigen; Verwijder in plaats daarvan het object en maak het opnieuw met de nieuwe naam.
Transact-SQL syntaxis-conventies
Syntaxis
Syntaxis voor sp_rename
in SQL Server en Azure SQL Database:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Syntaxis voor sp_rename
(preview) in Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Syntaxis voor sp_rename
in Microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumenten
[ @objname = ] 'object_name'
De huidige gekwalificeerde of niet-gekwalificeerde naam van het gebruikersobject of gegevenstype. Als de naam van het object een kolom in een tabel is, moet object_name zich in de form table.column of schema.table.column bevinden. Als de naam van het object een index is, moet object_name zich in de form table.index of schema.table.index bevinden. Als de naam van het object een beperking is, moet object_name in het formulierschema.constraint staan.
Aanhalingstekens zijn alleen nodig als een gekwalificeerd object is opgegeven. Als er een volledig gekwalificeerde naam, inclusief een databasenaam, wordt opgegeven, moet de databasenaam de naam van de huidige database zijn. object_name is nvarchar(776), zonder standaardinstelling.
[ @newname = ] 'new_name'
De nieuwe naam voor het opgegeven object. new_name moet een eenmalige naam zijn en moet de regels voor id's volgen. newname is sysname, zonder standaardwaarde.
Triggernamen kunnen niet beginnen met # of ##.
Van toepassing op Magazijn in Microsoft Fabric:
- Schemanamen kunnen geen schemanamen bevatten
/
of\
beëindigen met een.
. - Tabelnamen mogen geen tabelnamen bevatten
/
of\
eindigen met een.
.
[ @objtype = ] 'object_type'
Het type object waarvan de naam wordt gewijzigd.
object_type is varchar(13), met een standaardwaarde en NULL
kan een van deze waarden zijn.
Waarde | Beschrijving |
---|---|
COLUMN |
De naam van een kolom wordt gewijzigd. |
DATABASE |
Een door de gebruiker gedefinieerde database. Dit objecttype is vereist bij het wijzigen van de naam van een database. |
INDEX |
Een door de gebruiker gedefinieerde index. Als u de naam van een index wijzigt met statistieken, wordt de naam van de statistieken ook automatisch gewijzigd. |
OBJECT |
Een item van een type dat wordt bijgehouden in sys.objects. Object kan bijvoorbeeld worden gebruikt om de naam van objecten te wijzigen, waaronder beperkingen (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), gebruikerstabellen, kolommen, opgeslagen procedures, inline tabelwaardefuncties, tabelwaardefuncties en regels. |
STATISTICS |
Van toepassing op: SQL Server 2012 (11.x) en hoger en Azure SQL Database. Statistieken die expliciet door een gebruiker zijn gemaakt of impliciet zijn gemaakt met een index. Als u de naam van de statistieken van een index wijzigt, wordt ook automatisch de naam van de index gewijzigd. |
USERDATATYPE |
Een door de gebruiker gedefinieerd CLR-type toegevoegd door CREATE TYPE of sp_addtype uit te voeren. |
van toepassing op: Azure Synapse Analytics
- In
sp_rename
(preview) voor Azure Synapse AnalyticsCOLUMN
is een verplichte waarde die aangeeft dat het objecttype dat moet worden gewijzigd een kolom is en moet altijd worden opgenomen in desp_rename
instructie. De naam van een kolom kan alleen worden gewijzigd als deze geen distributiekolom is.sp_rename
kan alleen worden gebruikt om de naam van eenCOLUMN
object in een gebruikersobject te wijzigen.
Van toepassing op: Microsoft Fabric
- Voor
sp_rename
het magazijn in Microsoft FabricOBJECT
is dit de enige ondersteunde waarde voor @objtype. - Voor
sp_rename
het SQL Analytics-eindpunt in Microsoft FabricOBJECT
is dit de enige ondersteunde waarde voor @objtype. De naam van tabellen en kolommen kan niet worden gewijzigd.
Codewaarden retourneren
0
(geslaagd) of een niet-nulnummer (fout).
Opmerkingen
Van toepassing op SQL Server (alle ondersteunde versies) en Azure SQL Database:
sp_rename
wijzigt automatisch de naam van de gekoppelde index wanneer de naam van een PRIMAIRE SLEUTEL of UNIEKE beperking wordt gewijzigd. Als een hernoemde index is gekoppeld aan een BEPERKING PRIMAIRE SLEUTEL, wordt de beperking PRIMAIRE SLEUTEL ook automatisch gewijzigd doorsp_rename
.sp_rename
kan worden gebruikt om de naam van primaire en secundaire XML-indexen te wijzigen.Als u de naam van een opgeslagen procedure, functie, weergave of trigger wijzigt, wordt de naam van het bijbehorende object niet gewijzigd in de definitiekolom van de catalogusweergave van sys.sql_modules of wordt verkregen met behulp van de ingebouwde functie OBJECT_DEFINITION . Daarom raden we u aan deze
sp_rename
objecttypen niet te gebruiken om de naam van deze objecttypen te wijzigen. In plaats daarvan zet u het object neer en maakt u het opnieuw met de nieuwe naam.
Van toepassing op SQL Server (alle ondersteunde versies), Azure SQL Database en Azure Synapse Analytics:
Als u de naam van een object zoals een tabel of kolom wijzigt, wordt de naam van verwijzingen naar dat object niet automatisch gewijzigd. U moet objecten wijzigen die handmatig verwijzen naar het hernoemde object. Als u bijvoorbeeld de naam van een tabelkolom wijzigt en naar die kolom wordt verwezen in een trigger, moet u de trigger wijzigen om de nieuwe kolomnaam weer te geven. Gebruik sys.sql_expression_afhankelijkheden om afhankelijkheden van het object weer te geven voordat u de naam ervan wijzigt.
Als u de naam van een kolom wijzigt, worden de metagegevens niet automatisch bijgewerkt voor objecten die alle kolommen selecteren (met behulp van de
*
) uit die tabel. Als u bijvoorbeeld de naam van een tabelkolom wijzigt en die kolom wordt verwezen door een niet-schemagebonden weergave of functie die alle kolommen SELECTs (met behulp van de*
), blijven de metagegevens voor de weergave of functie de oorspronkelijke kolomnaam weerspiegelen. Vernieuw de metagegevens met behulp van sp_refreshsqlmodule of sp_refreshview.U kunt alleen de naam van een object of gegevenstype in de huidige database wijzigen. De namen van de meeste systeemgegevenstypen en systeemobjecten kunnen niet worden gewijzigd.
Als u meer dan 128 tekens gebruikt voor de nieuwe naam, worden alleen de eerste 128 tekens gebruikt en wordt de rest afgekapt.
Van toepassing op Azure Synapse Analytics:
- In Azure Synapse Analytics
sp_rename
bevindt zich in preview voor toegewezen SQL-pools.
Machtigingen
Als u de naam van objecten, kolommen en indexen wilt wijzigen, moet u alter-machtigingen voor het object hebben. Als u de naam van gebruikerstypen wilt wijzigen, moet u de CONTROL-machtiging voor het type hebben. Als u de naam van een database wilt wijzigen, moet u lid zijn van de vaste serverfuncties sysadmin of dbcreator . Als u de naam van een grootboektabel wilt wijzigen, is de machtiging ALTER LEDGER vereist.
Voorbeelden
Eén. De naam van een tabel wijzigen
In het volgende voorbeeld wordt de naam van de SalesTerritory
tabel gewijzigd in SalesTerr
in het Sales
schema.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. De naam van een kolom wijzigen
In het volgende voorbeeld wordt de naam van de TerritoryID
kolom in de SalesTerritory
tabel gewijzigd in TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. De naam van een index wijzigen
In het volgende voorbeeld wordt de naam van de IX_ProductVendor_VendorID
index gewijzigd in IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. De naam van een aliasgegevenstype wijzigen
In het volgende voorbeeld wordt de naam van het Phone
aliasgegevenstype gewijzigd in Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Beperkingen voor naam wijzigen
In de volgende voorbeelden wordt de naam van een BEPERKING PRIMAIRE SLEUTEL, een CHECK-beperking en een BEPERKING REFERERENDE SLEUTEL gewijzigd. Wanneer u de naam van een beperking wijzigt, moet het schema waartoe de beperking behoort, worden opgegeven.
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. Naam van statistieken wijzigen
In het volgende voorbeeld wordt een statistiekenobject gemaakt met de naam contactMail1
en vervolgens de naam van de statistiek NewContact
gewijzigd in met behulp van sp_rename
. Wanneer u de naam van statistieken wijzigt, moet het object worden opgegeven in de notatie 'schema.table.statistics_name'.
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Voorbeelden: Azure Synapse Analytics
G. De naam van een kolom wijzigen
In het volgende voorbeeld wordt de naam van de c1
kolom in de table1
tabel gewijzigd in col1
.
Opmerking
Deze Azure Synapse Analytics-functie is nog steeds in preview voor toegewezen SQL-pools en is momenteel alleen beschikbaar voor objecten in het dbo
schema.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. De naam van een object wijzigen
In het volgende voorbeeld wordt de naam van de tabel dbo.table1
dbo.table2
gewijzigd in , met behulp van het OBJECT
type.
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';