Delen via


sp_rename (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-eindpunt in Microsoft FabricWarehouse 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 NULLkan 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 Analytics COLUMN is een verplichte waarde die aangeeft dat het objecttype dat moet worden gewijzigd een kolom is en moet altijd worden opgenomen in de sp_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 een COLUMN object in een gebruikersobject te wijzigen.

Van toepassing op: Microsoft Fabric

  • Voor sp_rename het magazijn in Microsoft Fabric OBJECT is dit de enige ondersteunde waarde voor @objtype.
  • Voor sp_rename het SQL Analytics-eindpunt in Microsoft Fabric OBJECT 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 door sp_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.table1dbo.table2gewijzigd in , met behulp van het OBJECT type.

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