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

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure 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. 名前を変更するオブジェクトがテーブル内の列である場合は、 object_nameの形式である必要があります 。 column または schema.テーブルです。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 テーブルの形式である必要があります。インデックスまたはスキーマ。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は、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. オブジェクトで追跡される型の項目。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 データベースAzure SQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later 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 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)

RemarksRemarks

現在のデータベースでのみ、オブジェクトまたはデータ型の名前を変更できます。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 インデックスの名前を変更する場合に使用できます。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

次の例では、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)