sp_rename(Transact-SQL)

  • 10/14/2020
  • 読むのに6分
    • m
    • c
    • M
    • m
    • r
    • +5

適用対象: SQL Server(サポートされているすべてのバージョン) AzureSQLデータベース Azure Synapse Analytics

現在のデータベースでユーザーが作成したオブジェクトの名前を変更します。このオブジェクトは、テーブル、インデックス、列、エイリアスデータ型、またはMicrosoft .NET Framework共通言語ランタイム(CLR)ユーザー定義型にすることができます。

In Azure Synapse Analytics、sp_renameはプレビューにあり、ユーザーオブジェクトのCOLUMNの名前を変更するためにのみ使用できます。

注意

オブジェクトの任意の部分の変更nameは、スクリプトとストアドプロシージャを壊す可能性があります。このステートメントを使用して、ストアドプロシージャ、トリガー、ユーザー定義関数、またはビューの名前を変更しないことをお勧めします。代わりに、オブジェクトを削除して、新しい名前で再作成してください。

Transact-SQL構文規則

構文

引数

“object_name”
ユーザーオブジェクトまたはデータ型の現在の修飾名または非修飾名です。名前を変更するオブジェクトがテーブルの列である場合、object_nameはtable.columnまたはschema.table.columnの形式である必要があります。名前を変更するオブジェクトがインデックスの場合、object_nameはtable.indexまたはschema.table.indexの形式である必要があります。名前を変更するオブジェクトが制約である場合、object_nameはschema.constraintの形式である必要があります。

引用符は、修飾オブジェクトが指定されている場合にのみ必要です。データベース名を含む完全修飾名を指定する場合、データベース名は現在のデータベースの名前である必要があります。 object_nameはnvarchar(776)であり、デフォルトはありません。

“new_name”
指定されたオブジェクトの新しい名前です。 new_nameは1つの部分からなる名前である必要があり、識別子の規則に従う必要があります。 newnameはsysnameであり、デフォルトはありません。

トリガー名を#または##で始めることはできません。

説明
COLUMN 名前を変更する列。
DATABASE ユーザー定義のデータベース。このオブジェクトタイプは、データベースの名前を変更するときに必要です。
INDEX ユーザー定義のインデックス。統計を使用してインデックスの名前を変更すると、統計の名前も自動的に変更されます。
OBJECT sys.objectsで追跡されるタイプのアイテム。たとえば、OBJECTを使用して、制約(CHECK、FOREIGN KEY、PRIMARY / UNIQUE KEY)、ユーザーテーブル、ルールなどのオブジェクトの名前を変更できます。
STATISTICS 適用対象:SQL Server 2012(11.x)以降およびAzure SQLデータベース。
ユーザーによって明示的に作成された統計、またはインデックスを使用して暗黙的に作成された統計。インデックスの統計の名前を変更すると、インデックスの名前も自動的に変更されます。
USERDATATYPE CREATETYPEまたはsp_addtypeを実行して追加されたCLRユーザー定義型。

「COLUMN」適用対象:Azure Synapse Analytics
in sp_rename(プレビュー)Azure Synapse Analyticsの場合、COLUMNは、名前を変更するオブジェクトタイプが列であることを指定する必須パラメーターです。これはデフォルト値のないvarchar(13)であり、常にsp_rename(プレビュー)ステートメントに含める必要があります。列の名前を変更できるのは、それが非配布列である場合のみです。

戻りコード値

0(成功)またはゼロ以外の数値(失敗)

備考

SQL Server(サポートされているすべてのバージョン)に適用され、AzureSQLデータベース
sp_renameは、PRIMARY KEYまたはUNIQUE制約の名前が変更されるたびに、関連付けられたインデックスの名前を自動的に変更します。名前が変更されたインデックスがPRIMARYKEY制約に関連付けられている場合、PRIMARYKEY制約もsp_renameによって自動的に名前が変更されます。

SQL Server(サポートされているすべてのバージョン)に適用され、AzureSQLデータベース
sp_renameを使用できます。プライマリおよびセカンダリXMLインデックスの名前を変更します。

SQL Server(サポートされているすべてのバージョン)およびAzure SQLデータベースに適用されます
ストアドプロシージャ、関数、ビュー、またはトリガーの名前を変更しても、対応する名前は変更されません。 sys.sql_modulesカタログビューの定義列にあるオブジェクト、またはOBJECT_DEFINITION組み込み関数を使用して取得されたオブジェクト。したがって、これらのオブジェクトタイプの名前を変更するためにsp_renameを使用しないことをお勧めします。代わりに、オブジェクトをドロップして新しい名前で再作成します。

SQL Server(サポートされているすべてのバージョン)、Azure SQLデータベース、およびAzure Synapse Analyticsに適用されます
テーブルなどのオブジェクトの名前を変更するか、列は、そのオブジェクトへの参照の名前を自動的に変更しません。名前が変更されたオブジェクトを参照するオブジェクトはすべて手動で変更する必要があります。たとえば、テーブルの列の名前を変更し、その列がトリガーで参照されている場合、新しい列名を反映するようにトリガーを変更する必要があります。 sys.sql_expression_dependenciesを使用して、オブジェクトの名前を変更する前に、オブジェクトへの依存関係を一覧表示します。

SQL Server(サポートされているすべてのバージョン)、Azure SQLデータベース、およびAzure SynapseAnalyticsに適用されます
オブジェクトの名前を変更できますまたは、現在のデータベースのみのデータ型。ほとんどのシステムデータ型とシステムオブジェクトの名前は変更できません。

権限

オブジェクト、列、インデックスの名前を変更するには、オブジェクトに対するALTER権限が必要です。ユーザータイプの名前を変更するには、タイプに対するCONTROL権限が必要です。データベースの名前を変更するには、sysadminまたはdbcreatorの固定サーバーロールのメンバーシップが必要です

A。テーブルの名前の変更

次の例では、iv id = “8b9b89cf44″のSalesTerritoryテーブルの名前をSalesTerrに変更します。 >

スキーマ。

B。列の名前を変更する

次の例では、SalesTerritoryテーブルのTerritoryID列の名前を。

C。インデックスの名前を変更する

次の例では、IX_ProductVendor_VendorIDインデックスの名前をIX_VendorIDに変更します。

D 。エイリアスデータ型の名前の変更

次の例では、Phoneエイリアスデータ型の名前をTelephoneに変更します。

E。制約の名前変更

次の例では、PRIMARY KEY制約、CHECK制約、およびFOREIGNKEY制約の名前を変更します。制約の名前を変更するときは、制約が属するスキーマを指定する必要があります。

F。統計の名前変更

次の例では、contactMail1という名前の統計オブジェクトを作成し、sp_renameを使用して統計の名前をNewContactに変更します。統計の名前を変更する場合、オブジェクトはschema.table.statistics_nameの形式で指定する必要があります。

例:Azure Synapse Analytics

G。列の名前を変更する

次の例では、table1テーブルのc1列の名前をcol1

関連項目

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です