RENAME (Transact-SQL)
適用対象: Azure Synapse Analytics Analytics 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;