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

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure 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形式である必要がありますtable.columnまたは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. 新しい名前は、1 つの要素名と識別子の規則に従う必要があります。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.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 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017 および Azure SQL データベースAzure SQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) 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 制約に関連付けられている、sp_rename によって PRIMARY KEY 制約が自動的に名前変更されます。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 インデックスの名前を変更する場合に使用できます。sp_rename can be used to rename primary and secondary XML indexes.

ストアド プロシージャ、関数、ビュー、またはトリガーは変更されません、対応するオブジェクトの名前の definition 列にあるいずれか、 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.

アクセス許可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

次の例では、 Sales スキーマの SalesTerritory テーブルの名前を SalesTerr に変更します。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)