sp_rename(Transact-SQL)

현재 데이터베이스에 있는 사용자가 만든 개체의 이름을 변경합니다. 이 개체는 테이블, 인덱스, 열, 별칭 데이터 형식 또는 Microsoft .NET Framework CLR(공용 언어 런타임) 사용자 정의 형식일 수 있습니다.

주의 사항주의

개체 이름의 일부를 변경하면 스크립트나 저장 프로시저가 작동되지 않을 수 있습니다. 이 문을 사용하여 저장 프로시저, 트리거, 사용자 정의 함수 또는 뷰의 이름을 변경하지 않는 것이 좋습니다. 대신 개체를 삭제하고 새로운 이름으로 다시 만듭니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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