sp_rename(Transact-SQL)
현재 데이터베이스에 있는 사용자가 만든 개체의 이름을 변경합니다. 이 개체는 테이블, 인덱스, 열, 별칭 데이터 형식 또는 Microsoft .NET Framework CLR(공용 언어 런타임) 사용자 정의 형식일 수 있습니다.
주의 |
---|
개체 이름의 일부를 변경하면 스크립트나 저장 프로시저가 작동되지 않을 수 있습니다. 이 문을 사용하여 저장 프로시저, 트리거, 사용자 정의 함수 또는 뷰의 이름을 변경하지 않는 것이 좋습니다. 대신 개체를 삭제하고 새로운 이름으로 다시 만듭니다. |
구문
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
인수
[ @objname = ] 'object_name'
현재 사용자 개체나 데이터 형식의 정규화된 이름 또는 정규화되지 않은 이름입니다. 이름을 변경할 개체가 테이블의 열인 경우 object_name은 table.column 또는 schema.table.column 형식이어야 합니다. 이름을 변경할 개체가 인덱스인 경우 object_name은 table.index 또는 schema.table.index 형식이어야 합니다.정규화된 개체가 지정된 경우에는 따옴표만 필요합니다. 데이터베이스 이름을 포함하여 정규화된 이름이 제공된 경우 데이터베이스 이름은 현재 데이터베이스의 이름이어야 합니다. object_name은 nvarchar(776)이며 기본값은 없습니다.
[ @newname = ] 'new_name'
지정한 개체의 새 이름입니다. new_name은 한 부분으로 된 이름이어야 하며 식별자 규칙을 따라야 합니다. newname 은 sysname이며 기본값은 없습니다.[!참고]
트리거 이름은 # 또는 ##로 시작될 수 없습니다.
[ @objtype = ] 'object_type'
이름을 바꾸는 개체의 유형입니다. object_type은 varchar(13)이고 기본값은 NULL이며 다음 값 중 하나를 사용할 수 있습니다.값
설명
COLUMN
이름을 바꿀 열입니다.
DATABASE
사용자 정의 데이터베이스입니다. 이 개체 유형은 데이터베이스 이름을 바꿀 경우 필요합니다.
INDEX
사용자 정의 인덱스입니다.
OBJECT
sys.objects에서 추적된 유형의 항목입니다. 예를 들어 OBJECT는 제약 조건(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), 사용자 테이블 및 규칙을 포함하는 개체의 이름을 바꿀 때 사용될 수 있습니다.
USERDATATYPE
CREATE TYPE 또는 sp_addtype을 실행하여 추가된 별칭 데이터 형식 또는 CLR 사용자 정의 형식입니다.
반환 코드 값
0(성공) 또는 0이 아닌 수(실패)
주의
현재 데이터베이스에서만 개체 또는 데이터 형식의 이름을 변경할 수 있습니다. 대부분의 시스템 데이터 형식 및 시스템 개체의 이름은 변경할 수 없습니다.
sp_rename은 PRIMARY KEY 또는 UNIQUE 제약 조건의 이름을 바꿀 때마다 연결된 인덱스의 이름을 자동으로 바꿉니다. 이름을 바꾼 인덱스가 PRIMARY KEY 제약 조건과 연결된 경우 PRIMARY KEY 제약 조건의 이름도 sp_rename에 의해 자동으로 바뀝니다.
sp_rename을 사용하여 기본 XML 인덱스 및 보조 XML 인덱스의 이름을 변경할 수 있습니다.
저장 프로시저, 함수, 뷰 또는 트리거의 이름을 변경해도 sys.sql_modules 카탈로그 뷰의 definition 열에 있는 해당 개체 이름은 변경되지 않습니다. 따라서 이러한 개체 유형의 이름을 변경할 때 sp_rename을 사용하지 않는 것이 좋습니다. 대신 해당 개체를 삭제하고 새로운 이름으로 다시 만듭니다.
테이블이나 열과 같은 개체의 이름을 변경해도 이 개체를 참조하는 개체의 이름은 자동으로 변경되지 않습니다. 이름을 변경한 개체를 참조하는 개체는 수동으로 수정해야 합니다. 예를 들어 테이블 열의 이름을 변경하고 이 열이 트리거에서 참조되는 경우 트리거를 수정하여 새로운 열 이름을 적용해야 합니다. sys.sql_expression_dependencies를 사용하여 이 개체에 종속된 개체를 나열한 다음 개체의 이름을 변경할 수 있습니다.
사용 권한
개체, 열 및 인덱스의 이름을 변경하려면 개체에 대한 ALTER 권한이 필요합니다. 사용자 유형의 이름을 변경하려면 유형에 대한 CONTROL 권한이 필요합니다. 데이터베이스의 이름을 변경하려면 sysadmin 또는 dbcreator 고정 서버 역할의 멤버여야 합니다.
예
1. 테이블 이름 바꾸기
다음 예에서는 Sales 스키마에 있는 SalesTerritory 테이블의 이름을 SalesTerr로 바꿉니다.
USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
2. 열 이름 바꾸기
다음 예에서는 SalesTerritory 테이블의 TerritoryID 열 이름을 TerrID로 변경합니다.
USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
3. 인덱스 이름 바꾸기
다음 예에서는 IX_ProductVendor_VendorID 인덱스의 이름을 IX_VendorID로 변경합니다.
USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
4. 별칭 데이터 형식 이름 바꾸기
다음 예에서는 Phone 별칭 데이터 형식의 이름을 Telephone으로 변경합니다.
USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO