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

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

현재 데이터베이스에 있는 사용자가 만든 개체의 이름을 변경합니다.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. 이름을 변경할 개체가 테이블에서 열 경우 object_name 형태로 있어야 또는 schema.table.column합니다.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 형태로 있어야 table.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_name 폼에 있어야 schema.constraint합니다.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.

ValueValue DescriptionDescription
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.objects합니다.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 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure 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 A CLR 사용자 정의 형식 실행 하 여 추가 CREATE TYPE 또는 sp_addtype합니다.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.

저장된 프로시저, 함수, 뷰 또는 트리거 변경 되지 것입니다 해당 개체의 이름을 정의 열에는 sys.sql_modules 카탈로그 뷰 또는 사용 하 여 가져온는 OBJECT_ 정의 기본 제공 함수입니다.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.

PermissionsPermissions

개체, 열 및 인덱스의 이름을 변경하려면 개체에 대한 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

1.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  

2.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  

3.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  

4.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  

5.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)  

6.F. 통계 이름 바꾸기Renaming statistics

다음 예제에서는 contactMail1 라는 통계 개체를 만들고 NewContact에 통계 sp_rename을 사용 하 여 이름을 바꿉니다.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)