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 数据库中的数据库,可使用 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)

更改用户定义的表的名称。 使用一部分、两部分或三部分名称指定要重命名的表。 以一部分名称的形式指定新表 new_table_name 。

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 的视图会变为无效状态。 若要解决此问题,可以避免在视图中使用三部分名称,或更新视图以引用新数据库名称。

重命名表时,视图不会进行更新以引用新表名。 数据库内部或外部引用以前表名的每个视图都会变为无效状态。 若要解决此问题,可以更新每个视图以引用新表名。

重命名列时,视图不会进行更新,因此不会引用新列名。 在执行 alter view 之前,视图将一直显示旧的列名称。 在某些情况下,视图可能会变为无效,需要删除并重新创建。

锁定

重命名表会在 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;

后续步骤