sp_rename(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
현재 데이터베이스에서 사용자가 만든 개체의 이름을 변경합니다. 이 개체는 테이블, 인덱스, 열, 별칭 데이터 형식 또는 Microsoft일 수 있습니다.
.NET Framework CLR(공용 언어 런타임) 사용자 정의 형식입니다.
Important
일부 시스템 개체 및 Transact-SQL 구문은 이 문서를 포함하여 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다. 자세한 내용은 T-SQL 지원을 참조 하세요.
주의
개체 이름의 일부를 변경하면 스크립트 및 저장 프로시저가 중단될 수 있습니다. 저장 프로시저, 트리거, 사용자 정의 함수 또는 뷰의 이름을 바꾸려면 이 문을 사용하지 않는 것이 좋습니다. 대신 개체를 삭제하고 새 이름으로 다시 만듭니다.
구문
SQL Server 및 Azure SQL Database의 구문 sp_rename
:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Azure Synapse Analytics의 (미리 보기) 구문 sp_rename
:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Microsoft Fabric의 구문 sp_rename
:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
인수
[ @objname = ] 'object_name'
사용자 개체 또는 데이터 형식의 현재 정규화 또는 정규화되지 않은 이름입니다. 이름을 바꿀 개체가 테이블의 열인 경우 object_name table.column 또는 schema.table.column 형식이어야 합니다. 이름을 바꿀 개체가 인덱스인 경우 object_name table.index 또는 schema.table.index 형식이어야 합니다. 이름을 바꿀 개체가 제약 조건인 경우 object_name schema.constraint 형식이어야 합니다.
따옴표는 정규화된 개체가 지정된 경우에만 필요합니다. 데이터베이스 이름을 포함하여 정규화된 이름을 제공하는 경우 데이터베이스 이름은 현재 데이터베이스의 이름이어야 합니다. object_name nvarchar(776)이며 기본값은 없습니다.
[ @newname = ] 'new_name'
지정된 개체의 새 이름입니다. new_name 한 부분으로 된 이름이어야 하며 식별자에 대한 규칙을 따라야 합니다. newname 은 sysname이며 기본값은 없습니다.
트리거 이름은 #또는 ##으로 시작할 수 없습니다.
Microsoft Fabric의 Warehouse에 적용됩니다.
- 스키마 이름은
/
이나\
을(를) 포함하거나.
(으)로 끝날 수 없습니다. - 테이블 이름은
/
이나\
을(를) 포함하거나.
(으)로 끝날 수 없습니다.
[ @objtype = ] 'object_type'
이름을 바꿀 개체의 형식입니다. object_type 기본값NULL
인 varchar(13)이며 이러한 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
COLUMN |
이름을 바꿀 열입니다. |
DATABASE |
사용자 정의 데이터베이스입니다. 데이터베이스 이름을 바꾸는 경우 이 개체 형식이 필요합니다. |
INDEX |
사용자 정의 인덱스입니다. 통계를 사용하여 인덱스의 이름을 바꾸면 통계의 이름도 자동으로 바뀝니다. |
OBJECT |
sys.objects에서 추적되는 형식의 항목입니다. 예를 들어 OBJECT를 사용하여 제약 조건(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), 사용자 테이블 및 규칙을 포함한 개체의 이름을 바꿀 수 있습니다. |
STATISTICS |
적용 대상: SQL Server 2012(11.x) 이상 및 Azure SQL Database. 사용자가 명시적으로 만들었거나 인덱스를 통해 암시적으로 만들어진 통계입니다. 인덱스의 통계 이름을 바꾸면 인덱스 자체도 자동으로 이름이 바뀝니다. |
USERDATATYPE |
CREATE TYPE 또는 sp_addtype 실행하여 추가된 CLR 사용자 정의 형식입니다. |
적용 대상: Azure Synapse Analytics
- Azure Synapse Analytics
COLUMN
의 (미리 보기)에서는sp_rename
이름을 바꿀 개체 형식이 열이며 항상 문에sp_rename
포함되어야 하므로 필수 값입니다. 열은 배포 열이 아닌 경우에만 이름을 바꿀 수 있습니다.sp_rename
는 사용자 개체의COLUMN
이름을 바꾸는 데만 사용할 수 있습니다.
적용 대상: Microsoft Fabric
sp_rename
Microsoft FabricOBJECT
의 Warehouse에서 @objtype 유일하게 지원되는 값입니다.sp_rename
Microsoft FabricOBJECT
의 SQL 분석 엔드포인트에서 @objtype 유일하게 지원되는 값입니다. 테이블의 이름을 바꿀 수 없습니다.
반환 코드 값
0
(성공) 또는 0이 아닌 숫자(실패).
설명
SQL Server(지원되는 모든 버전) 및 Azure SQL Database에 적용됩니다.
sp_rename
는 PRIMARY KEY 또는 UNIQUE 제약 조건의 이름을 바꿀 때마다 연결된 인덱스의 이름을 자동으로 바꿉니다. 이름이 바뀐 인덱스가 PRIMARY KEY 제약 조건에 연결된 경우 PRIMARY KEY 제약 조건의 이름도 자동으로 바뀝sp_rename
니다.sp_rename
는 기본 및 보조 XML 인덱스의 이름을 바꾸는 데 사용할 수 있습니다.저장 프로시저, 함수, 뷰 또는 트리거의 이름을 바꾸면 sys.sql_modules 카탈로그 뷰의 정의 열에서 또는 OBJECT_DEFINITION 기본 제공 함수를 사용하여 가져온 해당 개체의 이름이 변경되지 않습니다. 따라서 이러한 개체 형식의 이름을 바꾸는 데는 사용하지 않는 것이 좋습니다
sp_rename
. 대신 해당 개체를 삭제하고 새 이름으로 개체를 다시 만듭니다.
SQL Server(지원되는 모든 버전), Azure SQL Database 및 Azure Synapse Analytics에 적용됩니다.
테이블 또는 열과 같은 개체의 이름을 바꾸면 해당 개체에 대한 참조의 이름이 자동으로 바뀌지 않습니다. 이름을 변경한 개체를 참조하는 개체는 수동으로 수정해야 합니다. 예를 들어 테이블 열 이름을 바꾸고 해당 열이 트리거에서 참조되는 경우 트리거를 수정하여 새 열 이름을 적용해야 합니다. sys.sql_expression_dependencies 를 사용하여 이 개체에 종속된 개체를 나열한 다음 개체의 이름을 변경할 수 있습니다.
열 이름을 바꾸면 해당 테이블의 모든 열(
*
사용)을 선택하는 개체에 대한 메타데이터가 자동으로 업데이트되지 않습니다. 예를 들어 테이블 열의 이름을 바꾸고 해당 열이 모든 열(*
사용)을 선택하는 스키마 바인딩되지 않은 보기 또는 함수에서 참조되는 경우 보기 또는 함수의 메타데이터는 원래 열 이름을 계속 반영합니다. sp_refreshsqlmodule 또는 sp_refreshview를 사용하여 메타데이터를 새로 고칩니다.현재 데이터베이스에서만 개체 또는 데이터 형식의 이름을 변경할 수 있습니다. 대부분의 시스템 데이터 형식 및 시스템 개체의 이름은 변경할 수 없습니다.
새 이름에 128자 이상을 사용하는 경우 처음 128자만 사용되고 나머지는 잘립니다.
Azure Synapse Analytics에 적용됩니다.
- Azure Synapse Analytics
sp_rename
에서 전용 SQL 풀에 대한 미리 보기 로 제공됩니다.
사용 권한
개체, 열 및 인덱스의 이름을 바꾸려면 개체에 대한 ALTER 권한이 필요합니다. 사용자 형식의 이름을 바꾸려면 형식에 대한 CONTROL 권한이 필요합니다. 데이터베이스 이름을 바꾸려면 sysadmin 또는 dbcreator 고정 서버 역할의 멤버 자격이 필요합니다. 원장 테이블의 이름을 바꾸려면 ALTER LEDGER 권한이 필요합니다.
예제
A. 테이블 이름 바꾸기
다음 예제에서는 Sales
스키마에 있는 SalesTerritory
테이블 이름을 SalesTerr
로 바꿉니다.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. 열 이름 바꾸기
다음 예제에서는 테이블TerrID
의 TerritoryID
열 SalesTerritory
이름을 .로 바꿉니다.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. 인덱스 이름 바꾸기
다음 예제에서는 인덱스의 이름을 .로 IX_VendorID
바꿉니다IX_ProductVendor_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. 별칭 데이터 형식 이름 바꾸기
다음 예에서는 Phone
별칭 데이터 형식의 이름을 Telephone
으로 변경합니다.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. 제약 조건 이름 바꾸기
다음 예에서는 PRIMARY KEY 제약 조건, CHECK 제약 조건 및 FOREIGN KEY 제약 조건의 이름을 바꿉니다. 제약 조건의 이름을 바꾸는 경우 제약 조건이 속한 스키마를 지정해야 합니다.
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. 통계 이름 바꾸기
다음 예제에서는 명명 contactMail1
된 통계 개체를 만든 다음 , 를 사용하여 sp_rename
통계 NewContact
의 이름을 바꿉니다. 통계 이름을 바꾸면 개체를 'schema.table.statistics_name' 형식으로 지정해야 합니다.
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
예제: Azure Synapse Analytics
G. 열 이름 바꾸기
다음 예제에서는 테이블col1
의 c1
열 table1
이름을 .로 바꿉니다.
참고 항목
이 Azure Synapse Analytics 기능은 전용 SQL 풀에 대해 아직 미리 보기로 제공되며 현재 스키마의 dbo
개체에만 사용할 수 있습니다.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. 개체 이름 바꾸기
다음 예제에서는 형식을 사용하여 테이블 dbo.table1
dbo.table2
이름을 OBJECT
로 바꿉니다.
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';