适用于: Analytics Platform System (PDW)
将用户定义的数据库的名称从 database_name 更改为 new_database_name 。 无法将数据库重命名为以下任何 Analytics Platform System (PDW) 保留数据库名称:
master
model
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;
sp_renamedb
ALTER DATABASE(Azure SQL 数据库)