sp_rename(Transact-SQL)sp_rename (Transact-SQL)

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

현재 데이터베이스에 있는 사용자가 만든 개체의 이름을 변경합니다.Changes the name of a user-created object in the current database. 이 개체는 테이블, 인덱스, 열, 별칭 데이터 형식 또는 MicrosoftMicrosoft .NET Framework.NET Framework CLR (공용 언어 런타임) 사용자 정의 형식일 수 있습니다.This object can be a table, index, column, alias data type, or MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR) user-defined type.

주의

개체 이름의 일부를 변경하면 스크립트나 저장 프로시저가 작동되지 않을 수 있습니다.Changing any part of an object name can break scripts and stored procedures. 이 문을 사용하여 저장 프로시저, 트리거, 사용자 정의 함수 또는 뷰의 이름을 변경하지 않는 것이 좋습니다. 대신 개체를 삭제하고 새로운 이름으로 다시 만듭니다.We recommend you do not use this statement to rename stored procedures, triggers, user-defined functions, or views; instead, drop the object and re-create it with the new name.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

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

인수Arguments

[ @objname =] 'object_name'[ @objname = ] 'object_name'
현재 사용자 개체나 데이터 형식의 정규화된 이름 또는 정규화되지 않은 이름입니다.Is the current qualified or nonqualified name of the user object or data type. 이름을 바꿀 개체가 테이블의 열인 경우에는 테이블. column 또는 schema. table 열object_name 있어야 합니다.If the object to be renamed is a column in a table, object_name must be in the form table.column or schema.table.column. 이름을 바꿀 개체가 인덱스 이면 object_name 테이블. index 또는 schema. table. index형식 이어야 합니다.If the object to be renamed is an index, object_name must be in the form table.index or schema.table.index. 이름을 바꿀 개체가 제약 조건이 면 object_nameschema. 제약 조건형식 이어야 합니다.If the object to be renamed is a constraint, object_name must be in the form schema.constraint.

정규화된 개체가 지정된 경우에는 따옴표만 필요합니다.Quotation marks are only necessary if a qualified object is specified. 데이터베이스 이름을 포함한 정규화된 이름인 경우 반드시 현재 데이터베이스의 이름을 사용해야 합니다.If a fully qualified name, including a database name, is provided, the database name must be the name of the current database. object_namenvarchar (776) 이며 기본값은 없습니다.object_name is nvarchar(776), with no default.

[ @newname =] 'new_name'[ @newname = ] 'new_name'
지정한 개체의 새 이름입니다.Is the new name for the specified object. new_name 은 한 부분으로 구성 된 이름 이어야 하며 식별자 규칙을 따라야 합니다.new_name must be a one-part name and must follow the rules for identifiers. newnamesysname이며 기본값은 없습니다.newname is sysname, with no default.

참고

트리거 이름은 # 또는 ##로 시작될 수 없습니다.Trigger names cannot start with # or ##.

[ @objtype =] 'object_type'[ @objtype = ] 'object_type'
이름을 바꾸는 개체의 유형입니다.Is the type of object being renamed. object_typevarchar (13) 이며 기본값은 NULL이 고 다음 값 중 하나일 수 있습니다.object_type is varchar(13), with a default of NULL, and can be one of these values.

Value 설명Description
COLUMNCOLUMN 이름을 바꿀 열입니다.A column to be renamed.
DATABASEDATABASE 사용자 정의 데이터베이스입니다.A user-defined database. 이 개체 유형은 데이터베이스 이름을 바꿀 경우 필요합니다.This object type is required when renaming a database.
INDEXINDEX 사용자 정의 인덱스입니다.A user-defined index. 통계가 포함된 인덱스의 이름을 바꾸면 통계 이름도 자동으로 바뀝니다.Renaming an index with statistics, also automatically renames the statistics.
OBJECTOBJECT Sys. 개체에서 추적 되는 형식의 항목입니다.An item of a type tracked in sys.objects. 예를 들어 OBJECT는 제약 조건(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), 사용자 테이블 및 규칙을 포함하는 개체의 이름을 바꿀 때 사용될 수 있습니다.For example, OBJECT could be used to rename objects including constraints (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), user tables, and rules.
STATISTICSSTATISTICS 적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x) 이상 및 Azure SQL DatabaseAzure SQL DatabaseApplies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) and later and Azure SQL DatabaseAzure SQL Database.

사용자가 명시적으로 만들었거나 인덱스를 통해 암시적으로 만들어진 통계입니다.Statistics created explicitly by a user or created implicitly with an index. 인덱스의 통계 이름을 바꾸면 인덱스 자체도 자동으로 이름이 바뀝니다.Renaming the statistics of an index automatically renames the index as well.
USERDATATYPEUSERDATATYPE CREATE TYPE 또는 sp_addtype를 실행 하 여 추가 된 CLR 사용자 정의 형식 입니다.A CLR User-defined Types added by executing CREATE TYPE or sp_addtype.

반환 코드 값Return Code Values

0(성공) 또는 0이 아닌 수(실패)0 (success) or a nonzero number (failure)

설명Remarks

현재 데이터베이스에서만 개체 또는 데이터 형식의 이름을 변경할 수 있습니다.You can change the name of an object or data type in the current database only. 대부분의 시스템 데이터 형식 및 시스템 개체의 이름은 변경할 수 없습니다.The names of most system data types and system objects cannot be changed.

sp_rename은 PRIMARY KEY 또는 UNIQUE 제약 조건의 이름을 바꿀 때마다 연결된 인덱스의 이름을 자동으로 바꿉니다.sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. 이름을 바꾼 인덱스가 PRIMARY KEY 제약 조건과 연결된 경우 PRIMARY KEY 제약 조건의 이름도 sp_rename에 의해 자동으로 바뀝니다.If a renamed index is tied to a PRIMARY KEY constraint, the PRIMARY KEY constraint is also automatically renamed by sp_rename.

sp_rename을 사용하여 기본 XML 인덱스 및 보조 XML 인덱스의 이름을 변경할 수 있습니다.sp_rename can be used to rename primary and secondary XML indexes.

저장 프로시저, 함수, 뷰 또는 트리거의 이름을 바꾸면 sql_modules 카탈로그 뷰의 정의 열 또는 OBJECT_DEFINITION 기본 제공 함수를 사용 하 여 가져온 해당 개체의 이름이 변경 되지 않습니다.Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object either in the definition column of the sys.sql_modules catalog view or obtained using the OBJECT_DEFINITION built-in function. 따라서 이러한 개체 유형의 이름을 변경할 때 sp_rename을 사용하지 않는 것이 좋습니다.Therefore, we recommend that sp_rename not be used to rename these object types. 대신 해당 개체를 삭제하고 새로운 이름으로 다시 만듭니다.Instead, drop and re-create the object with its new name.

테이블이나 열과 같은 개체의 이름을 변경해도 이 개체를 참조하는 개체의 이름은 자동으로 변경되지 않습니다.Renaming an object such as a table or column will not automatically rename references to that object. 이름을 변경한 개체를 참조하는 개체는 수동으로 수정해야 합니다.You must modify any objects that reference the renamed object manually. 예를 들어 테이블 열의 이름을 변경하고 이 열이 트리거에서 참조되는 경우 트리거를 수정하여 새로운 열 이름을 적용해야 합니다.For example, if you rename a table column and that column is referenced in a trigger, you must modify the trigger to reflect the new column name. sys.sql_expression_dependencies 를 사용하여 이 개체에 종속된 개체를 나열한 다음 개체의 이름을 변경할 수 있습니다.Use sys.sql_expression_dependencies to list dependencies on the object before renaming it.

사용 권한Permissions

개체, 열 및 인덱스의 이름을 변경하려면 개체에 대한 ALTER 권한이 필요합니다.To rename objects, columns, and indexes, requires ALTER permission on the object. 사용자 유형의 이름을 변경하려면 유형에 대한 CONTROL 권한이 필요합니다.To rename user types, requires CONTROL permission on the type. 데이터베이스의 이름을 변경하려면 sysadmin 또는 dbcreator 고정 서버 역할의 멤버여야 합니다.To rename a database, requires membership in the sysadmin or dbcreator fixed server roles

예제Examples

A.A. 테이블 이름 바꾸기Renaming a table

다음 예에서는 SalesTerritory 스키마에 있는 SalesTerr 테이블의 이름을 Sales 로 바꿉니다.The following example renames the SalesTerritory table to SalesTerr in the Sales schema.

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

B.B. 열 이름 바꾸기Renaming a column

다음 예에서는 TerritoryID 테이블의 열 이름을 SalesTerritory 로 변경 합니다 TerrID .The following example renames the TerritoryID column in the SalesTerritory table to TerrID.

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

C.C. 인덱스 이름 바꾸기Renaming an index

다음 예에서는 IX_ProductVendor_VendorID 인덱스의 이름을 IX_VendorID로 변경합니다.The following example renames the IX_ProductVendor_VendorID index to IX_VendorID.

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

D.D. 별칭 데이터 형식 이름 바꾸기Renaming an alias data type

다음 예에서는 Phone 별칭 데이터 형식의 이름을 Telephone으로 변경합니다.The following example renames the Phone alias data type to Telephone.

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

E.E. 제약 조건 이름 바꾸기Renaming constraints

다음 예에서는 PRIMARY KEY 제약 조건, CHECK 제약 조건 및 FOREIGN KEY 제약 조건의 이름을 바꿉니다.The following examples rename a PRIMARY KEY constraint, a CHECK constraint and a FOREIGN KEY constraint. 제약 조건 이름을 바꿀 때는 제약 조건이 속한 스키마를 지정해야 합니다.When renaming a constraint, the schema to which the constraint belongs must be specified.

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.F. 통계 이름 바꾸기Renaming statistics

다음 예에서는 contactMail1 라는 통계 개체를 만든 후 sp_rename를 사용 하 여 통계의 이름을 NewContact로 바꿉니다.The following example creates a statistics object named contactMail1 and then renames the statistic to NewContact by using sp_rename. 통계 이름을 바꾸면 개체를 schema.table.statistics_name 형식으로 지정해야 합니다.When renaming statistics, the object must be specified in the format schema.table.statistics_name.

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

참고 항목See Also

sys.sql_expression_dependencies(Transact-SQL) sys.sql_expression_dependencies (Transact-SQL)
sys.sql_modules(Transact-SQL) sys.sql_modules (Transact-SQL)
Transact-sql)(시스템 저장 프로시저 System Stored Procedures (Transact-SQL)
Transact-sql)(저장 프로시저 데이터베이스 엔진Database Engine Stored Procedures (Transact-SQL)