본문 바로가기

Database/MS-SQL

테이블명 변경하기

sp_rename

현재 데이터베이스에서 테이블, 열 또는 사용자 정의 데이터 형식 등의 사용자 작성 개체의 이름을 변경합니다.

구문

sp_rename [ @objname = 'object_name' , 
    
@newname = 'new_name'
     [ @objtype = 'object_type]

인수

[@objname ='object_name'

테이블, 뷰, 열, 저장 프로시저, 트리거, 기본값, 데이터베이스, 개체 또는 규칙 등의 사용자 개체 또는 데이터 형식의 현재 이름입니다. 이름을 바꿀 개체가 테이블의 열인 경우, object_nametable.column 형식이어야 합니다. 이름을 바꿀 개체가 인덱스인 경우, object_name은 table.index형식이어야 합니다. object_name은 nvarchar(776)이며 기본값은 없습니다.

[@newname ='new_name'

지정한 개체의 새 이름입니다. new_name은 한 부분 이름이어야 하며 식별자 이름 지정 규칙에 따라야 합니다. newname은 sysname이며 기본값은 없습니다.

[@object_type ='object_type'

이름을 바꾸는 개체의 유형입니다. object_type은 varchar(13)이며 기본값은 NULL입니다. 다음 값 중 하나를 사용할 수 있습니다.

설명
COLUMN 이름을 바꿀 열입니다.
DATABASE 사용자 정의 데이터베이스입니다. 이 옵션은 데이터베이스 이름을 바꿀 경우 필요합니다.
INDEX 사용자 정의 인덱스입니다.
OBJECT sysobjects에서 추적될 유형의 항목입니다. 예를 들어, OBJECT는 제약 조건(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), 사용자 테이블, 뷰, 저장 프로시저, 트리거 및 규칙을 비롯한 개체의 이름을 바꿀 때 사용할 수 있습니다.
USERDATATYPE sp_addtype을 실행하여 추가된 사용자 정의 데이터 형식입니다.

반환 코드 값

0(성공) 또는 0이 아닌 수(실패)

비고

현재 데이터베이스에서만 개체 또는 데이터 형식의 이름을 변경할 수 있습니다. 대부분의 시스템 데이터 형식 및 시스템 개체의 이름은 변경할 수 없습니다.

뷰의 이름을 바꾸는 경우, 뷰에 대한 정보는 sysobjects 테이블에서 업데이트됩니다. 저장 프로시저의 이름을 바꾸는 경우, 저장 프로시저에 대한 정보는 sysobjects 테이블에서 변경됩니다.

sp_rename은 PRIMARY KEY 또는 UNIQUE 제약 조건의 이름을 바꿀 때마다 연결된 인덱스의 이름을 자동으로 바꿉니다. 이름을 바꾼 인덱스가 PRIMARY KEY 제약 조건과 연결이 된 경우, 기본 키 이름 또한 sp_rename이 자동으로 바꿉니다.

중요   저장 프로시저 및 뷰의 이름을 바꾼 후에는 프로시저 캐시를 플러시하여 모든 종속 저장 프로시저 및 뷰가 다시 컴파일되도록 합니다.

저장 프로시저 및 뷰는 데이터를 저장하지 않으므로 빨리 삭제되고 다시 만들어질 수 있습니다. 텍스트 개체 이름 바꾸기에서 최상의 결과를 얻으려면, 개체를 삭제하고 새 이름으로 다시 만드십시오.

사용 권한

Members of the sysadmin 고정 서버 역할, db_owner 및 db_ddladmin 고정 데이터베이스 역할의 구성원 또는 개체의 소유자만이 sp_rename을 실행할 수 있습니다. sysadmin 및dbcreator 고정 서버 역할의 구성원만이 'database'를 object_type으로 하여 sp_rename을 실행할 수 있습니다.

예제
A. 테이블 이름 바꾸기

다음은 customers 테이블의 이름을 custs로 바꾸는 예제입니다.

EXEC sp_rename 'customers', 'custs' 
B. 열 이름 바꾸기

다음은 customers 테이블의 contact title 열의 이름을 title로 바꾸는 예제입니다.

EXEC sp_rename 'customers.[contact title]', 'title', 'COLUMN'