改名(Transact-SQL)

適用対象:Azure Synapse Analytics

Azure Synapse Analytics 内のユーザーが作成したテーブルの名前を変更します。

この記事はAzure Synapse Analyticsにのみ適用されます:

  • 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
[;]

引数

オブジェクトのリネーム [::] [ [database_name . [ schema_name ] 。 ] |[ schema_name 。 ]] table_namenew_table_name

適用対象:Azure Synapse Analytics

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

アクセス許可

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

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

制限事項と制約事項

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

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

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

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

列名変更の制限

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

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

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

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

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

ロック

テーブルの名前を変更するには、 DATABASE オブジェクトに共有ロック、 SCHEMA オブジェクトに共有ロック、テーブルの排他ロックが必要です。

例

A. テーブル名の変更

適用対象:Azure Synapse Analytics

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

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

RENAME OBJECT mydb.dbo.Customer TO Customer1;

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

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

適用対象:Azure Synapse Analytics

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

ALTER SCHEMA dbo TRANSFER OBJECT::product.item;

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

適用対象:Azure Synapse Analytics

使用中に、テーブルの名前を変更することはできません。 テーブル名を変更するには、テーブルに排他ロックが必要です テーブルを使用している場合は、テーブルを使用しているセッションを終了する必要があります。 セッションを終了するには、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';