sp_rename (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database yesAzure Synapse Analytics

Mengubah nama objek yang dibuat pengguna di database saat ini. Objek ini bisa berupa jenis tabel, indeks, kolom, jenis data alias, atau Microsoft .NET Framework common language runtime (CLR) yang ditentukan pengguna.

Catatan

Di Azure Synapse Analytics, sp_rename berada di Pratinjau untuk kumpulan SQL khusus dan hanya dapat digunakan untuk mengganti nama KOLOM di objek pengguna.

Perhatian

Mengubah bagian mana pun dari nama objek dapat merusak skrip dan prosedur tersimpan. Kami sarankan Anda tidak menggunakan pernyataan ini untuk mengganti nama prosedur, pemicu, fungsi yang ditentukan pengguna, atau tampilan yang tersimpan; sebagai gantinya, letakkan objek dan buat ulang dengan nama baru.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

-- Transact-SQL Syntax for sp_rename in SQL Server and Azure SQL Database
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]   
-- Transact-SQL Syntax for sp_rename (preview) in Azure Synapse Analytics
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    , [ @objtype = ] 'COLUMN'   

Argumen

[ @objname = ] 'object_name'
Adalah nama objek pengguna atau jenis data yang memenuhi syarat atau tidak memenuhi syarat saat ini. Jika objek yang akan diganti namanya adalah kolom dalam tabel, object_name harus dalam bentuk table.column atau schema.table.column. Jika objek yang akan diganti namanya adalah indeks, object_name harus dalam bentuk table.index atau schema.table.index. Jika objek yang akan diganti namanya adalah batasan, object_name harus dalam bentuk schema.constraint.

Tanda kutip hanya diperlukan jika objek yang memenuhi syarat ditentukan. Jika nama yang sepenuhnya memenuhi syarat, termasuk nama database, disediakan, nama database harus menjadi nama database saat ini. object_name adalah nvarchar(776), tanpa default.

[ @newname = ] 'new_name'
Adalah nama baru untuk objek yang ditentukan. new_name harus berupa nama satu bagian dan harus mengikuti aturan untuk pengidentifikasi. newname adalah sysname, tanpa default.

Catatan

Nama pemicu tidak dapat dimulai dengan # atau ##.

[ @objtype = ] 'object_type'
Adalah jenis objek yang diganti namanya. object_type adalah varchar(13), dengan default NULL, dan dapat menjadi salah satu nilai ini.

Nilai Deskripsi
KOLOM Kolom yang akan diganti namanya.
DATABASE Database yang ditentukan pengguna. Tipe objek ini diperlukan saat mengganti nama database.
INDEX Indeks yang ditentukan pengguna. Mengganti nama indeks dengan statistik, juga secara otomatis mengganti nama statistik.
OBJECT Item jenis yang dilacak di sys.objects. Misalnya, OBJECT dapat digunakan untuk mengganti nama objek termasuk batasan (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), tabel pengguna, dan aturan.
STATISTICS Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru dan Azure SQL Database.

Statistik yang dibuat secara eksplisit oleh pengguna atau dibuat secara implisit dengan indeks. Mengganti nama statistik indeks juga akan mengganti nama indeks secara otomatis.
USERDATATYPE Jenis yang Ditentukan Pengguna CLR ditambahkan dengan menjalankan CREATE TYPE atau sp_addtype.

[ @objtype = ] 'COLUMN' Berlaku untuk: Azure Synapse Analytics
Dalam sp_rename (pratinjau) untuk Azure Synapse Analytics, COLUMN adalah parameter wajib yang menentukan bahwa jenis objek yang akan diganti namanya adalah kolom. Ini adalah varchar(13) tanpa nilai default dan harus selalu disertakan dalam pernyataan sp_rename (pratinjau). Kolom hanya dapat diganti namanya jika merupakan kolom non-distribusi.

Mengembalikan Nilai Kode

0 (berhasil) atau angka bukan nol (kegagalan)

Keterangan

Berlaku untuk SQL Server (semua versi yang didukung) dan Azure SQL Database
sp_rename secara otomatis mengganti nama indeks terkait setiap kali batasan PRIMARY KEY atau UNIQUE diganti namanya. Jika indeks yang diganti namanya terkait dengan batasan KUNCI PRIMER, batasan KUNCI PRIMER juga secara otomatis diganti namanya dengan sp_rename.

Berlaku untuk SQL Server (semua versi yang didukung) dan Azure SQL Database
sp_rename dapat digunakan untuk mengganti nama indeks XML primer dan sekunder.

Berlaku untuk SQL Server (semua versi yang didukung) dan Azure SQL Database
Mengganti nama prosedur tersimpan, fungsi, tampilan, atau pemicu tidak akan mengubah nama objek terkait baik di kolom definisi tampilan katalog sys.sql_modules atau diperoleh menggunakan fungsi bawaan OBJECT_DEFINITION . Oleh karena itu, sebaiknya sp_rename tidak digunakan untuk mengganti nama jenis objek ini. Sebagai gantinya, hilangkan dan buat ulang objek dengan nama barunya.

Berlaku untuk SQL Server (semua versi yang didukung), Azure SQL Database, dan Azure Synapse Analytics
Mengganti nama objek seperti tabel atau kolom tidak akan secara otomatis mengganti nama referensi ke objek tersebut. Anda harus mengubah objek apa pun yang mereferensikan objek yang diganti namanya secara manual. Misalnya, jika Anda mengganti nama kolom tabel dan kolom tersebut direferensikan dalam pemicu, Anda harus memodifikasi pemicu untuk mencerminkan nama kolom baru. Gunakan sys.sql_expression_dependencies untuk mencantumkan dependensi pada objek sebelum mengganti nama objek.

Berlaku untuk SQL Server (semua versi yang didukung), Azure SQL Database, dan Azure Synapse Analytics
Anda hanya bisa mengubah nama objek atau tipe data dalam database saat ini. Nama sebagian besar tipe data sistem dan objek sistem tidak dapat diubah.

Izin

Untuk mengganti nama objek, kolom, dan indeks, memerlukan izin UBAH pada objek. Untuk mengganti nama jenis pengguna, memerlukan izin CONTROL pada jenis tersebut. Untuk mengganti nama database, memerlukan keanggotaan dalam peran server tetap sysadmin atau dbcreator

Contoh

A. Mengganti nama tabel

Contoh berikut mengganti nama SalesTerritory tabel menjadi SalesTerrSales dalam skema.

USE AdventureWorks2012;  
GO  
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';  
GO  

B. Mengganti nama kolom

Contoh berikut mengganti nama TerritoryID kolom dalam SalesTerritory tabel menjadi TerrID.

USE AdventureWorks2012;  
GO  
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';  
GO  

C. Mengganti nama indeks

Contoh berikut mengganti nama indeks menjadi IX_ProductVendor_VendorIDIX_VendorID.

USE AdventureWorks2012;  
GO  
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';  
GO  

D. Mengganti nama jenis data alias

Contoh berikut mengganti nama Phone jenis data alias menjadi Telephone.

USE AdventureWorks2012;  
GO  
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';  
GO  

E. Mengganti nama batasan

Contoh berikut mengganti nama batasan PRIMARY KEY, batasan CHECK, dan batasan FOREIGN KEY. Saat mengganti nama batasan, skema tempat batasan harus ditentukan.

USE AdventureWorks2012;   
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.  
sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';  
GO  
  
-- Rename a check constraint.  
sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';  
GO  
  
-- Rename a foreign key constraint.  
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');  
  
  
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. Mengganti nama statistik

Contoh berikut membuat objek statistik bernama contactMail1 lalu mengganti nama statistik menjadi NewContact dengan menggunakan sp_rename. Saat mengganti nama statistik, objek harus ditentukan dalam format schema.table.statistics_name.

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

Contoh: Azure Synapse Analytics

G. Mengganti nama kolom

Contoh berikut mengganti nama c1 kolom dalam table1 tabel menjadi col1.

Catatan

Fitur Azure Synapse Analytics ini masih dalam pratinjau untuk kumpulan SQL khusus dan saat ini hanya tersedia untuk objek dalam skema dbo.

CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO  

Lihat juga

sys.sql_expression_dependencies (SQL Bertransaksi)
sys.sql_modules (SQL Bertransaksi)
Prosedur Tersimpan Sistem (SQL Transaksi)
Prosedur Tersimpan Mesin Database (SQL Transact)