RENAME (Transact-SQL)

適用対象:Azure Synapse AnalyticsAnalytics Platform System (PDW)

Azure Synapse Analytics 内のユーザーが作成したテーブルの名前を変更します。 ユーザーが作成したテーブル、ユーザーが作成したテーブルの列、Analytics Platform System (PDW) のデータベースの名前を変更します。

この記事の適用対象: Azure Synapse Analytics および Analytics Platform System (PDW) のみ

  • SQL Server 内のデータベースの名前を変更するには、ストアド プロシージャ sp_renamedb を使用します。
  • Azure SQL Database でデータベースの名前を変更するには、ALTER DATABASE (Azure SQL Database) ステートメントを使用します。
  • スタンドアロンの専用 SQL プール (旧称 SQL DW) の名前変更はサポートされています。 Azure Synapse Analytics ワークスペースでの専用 SQL プールの名前変更は、現在サポートされていません。
  • この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

構文

-- Syntax for Azure Synapse Analytics

-- Rename a table.
RENAME OBJECT [::] [ [ database_name . [schema_name ] ] . ] | [schema_name . ] ] table_name TO new_table_name
[;]
-- Syntax for Analytics Platform System (PDW) 

-- Rename a table
RENAME OBJECT [::] [ [ database_name . [ schema_name ] . ] | [ schema_name . ] ] table_name TO new_table_name
[;]

-- Rename a database
RENAME DATABASE [::] database_name TO new_database_name
[;]

-- Rename a column 
RENAME OBJECT [::] [ [ database_name . [schema_name ] ] . ] | [schema_name . ] ] table_name COLUMN column_name TO new_column_name [;]

引数

RENAME OBJECT [::] [ [database_name . [ schema_name ] . ] | [ schema_name . ] ] table_name TO new_table_name

適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

ユーザー定義テーブルの名前を変更します。 1、2、または 3 部構成の名前で名前を変更するテーブルを指定します。 新しいテーブル new_table_name を 1 部構成の名前として指定します。

RENAME DATABASE [::] [ database_name TO new_database_name

適用対象: Analytics Platform System (PDW)

ユーザー定義のデータベースの名前を database_name から new_database_name に変更します。 次の Analytics Platform System (PDW) で予約されたいずれかのデータベース名に名前を変更することはできません。

  • master
  • model
  • msdb
  • tempdb
  • pdwtempdb1
  • pdwtempdb2
  • DWConfiguration
  • DWDiagnostics
  • DWQueue

RENAME OBJECT [::] [ [database_name . [ schema_name ] . ] | [ schema_name . ] ]table_name COLUMN column_name TO new_column_name

適用対象: Analytics Platform System (PDW)

テーブルの列名を変更します。

アクセス許可

このコマンドを実行するには、次のアクセス許可が必要です。

  • テーブルに対する ALTER 権限。

制限事項と制約事項

外部テーブル、インデックス、またはビューの名前は変更できない

外部テーブル、インデックス、またはビューの名前は変更できません。 この名前を変更する代わりに、外部テーブル、インデックス、またはビューを削除し、新しい名前を指定して再作成することができます。

使用中のテーブルの名前は変更できない

使用中に、テーブルまたはデータベースの名前を変更することはできません。 テーブルの名前を変更するには、テーブルに排他ロックが必要です。 テーブルを使用している場合は、テーブルを使用しているセッションを終了する必要があります。 セッションを終了するには、KILL コマンドを使用することができます。 セッションが終了すると、コミットされていない作業はロールバックされるので、KILL は注意して使用してください。 Azure Synapse Analytics 内のセッションの先頭には 'SID' が付いています。 KILL コマンドを呼び出すときは、'SID' とセッション番号を含めます。 この例では、アクティブまたはアイドル状態のセッションの一覧を表示し、'SID1234' のセッションを終了します。

列名変更の制限

テーブルの配布に使用される列の名前は変更できません。 外部テーブルや一時テーブルの列の名前も変更できません。

ビューは更新されません。

データベースの名前を変更すると、以前のデータベース名を使用するすべてのビューは無効になります。 この動作は、データベースの内部と外部の両方のビューに適用されます。 たとえば、Sales データベースの名前を変更する場合、SELECT * FROM Sales.dbo.table1 を含むビューが無効になります。 この問題を解決するには、ビューでは、3 部構成の名前は使用しないようにするか、新しいデータベース名を参照するようにビューを更新します。

テーブルの名前を変更したときに、新しいテーブルの名前を参照するようにビューは更新されません。 元のテーブル名を参照するとデータベース内部と外部の各ビューは無効になります。 この問題を解決するために、新しいテーブルの名前を参照するように各ビューを更新することができます。

列の名前を変更したときに、新しい列の名前を参照するようにビューは更新されません。 ビューが変更されるまで、ビューには古い列名が引き続き表示されます。 ビューが無効になり、削除や再作成が必要になることもあります。

ロック

テーブルの名前を変更するときは、DATABASE オブジェクトの共有ロック、SCHEMA オブジェクトの共有ロック、およびテーブルに対する排他ロックを取得します。

A. データベースの名前変更

適用対象: Analytics Platform System (PDW) のみ

この例では、ユーザー定義のデータベースの名前 AdWorks を AdWorks2 に変更します。

-- Rename the user defined database AdWorks
RENAME DATABASE AdWorks to AdWorks2;

テーブルの名前を変更すると、テーブルに関連付けられているすべてのオブジェクトとプロパティが、新しいテーブル名を参照するように更新されます。 たとえば、テーブルの定義、インデックス、制約、およびアクセス許可が更新されます。 ビューは更新されません。

B. テーブル名の変更

適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

この例では、Customer テーブルの名前を Customer1 に変更します。

-- Rename the customer table
RENAME OBJECT Customer TO Customer1;

RENAME OBJECT mydb.dbo.Customer TO Customer1;

テーブルの名前を変更すると、テーブルに関連付けられているすべてのオブジェクトとプロパティが、新しいテーブル名を参照するように更新されます。 たとえば、テーブルの定義、インデックス、制約、およびアクセス許可が更新されます。 ビューは更新されません。

C. 別のスキーマにテーブルを移動する

適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

オブジェクトを別のスキーマに移動する場合、ALTER SCHEMA を使用します。 たとえば、次のステートメントは、テーブルの項目を product スキーマから dbo スキーマに移動します。

ALTER SCHEMA dbo TRANSFER OBJECT::product.item;

D. テーブルの名前を変更する前にセッションを終了する

適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

使用中に、テーブルの名前を変更することはできません。 テーブル名を変更するには、テーブルに排他ロックが必要です テーブルを使用している場合は、テーブルを使用しているセッションを終了する必要があります。 セッションを終了するには、KILL コマンドを使用することができます。 セッションが終了すると、コミットされていない作業はロールバックされるので、KILL は注意して使用してください。 Azure Synapse Analytics 内のセッションの先頭には 'SID' が付いています。 KILL コマンドを呼び出すときに、'SID' とセッション番号を含める必要があります。 この例では、アクティブまたはアイドル状態のセッションの一覧を表示し、'SID1234' のセッションを終了します。

-- View a list of the current sessions
SELECT session_id, login_name, status
FROM sys.dm_pdw_exec_sessions
WHERE status='Active' OR status='Idle';

-- Terminate a session using the session_id.
KILL 'SID1234';

E. 列の名前変更

適用対象: Analytics Platform System (PDW)

この例では、Customer テーブルの FName 列の名前が FirstName に変更されます。

-- Rename the Fname column of the customer table
RENAME OBJECT::Customer COLUMN FName TO FirstName;

RENAME OBJECT mydb.dbo.Customer COLUMN FName TO FirstName;

次のステップ