重命名数据库

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

本文说明如何使用 SQL Server Management Studio (SSMS) 或 Transact-SQL (T-SQL) 在 SQL Server、Azure SQL 数据库或 Azure SQL 托管实例中重命名用户定义的数据库。 数据库名称可以包含任何符合标识符规则的字符。

注意

若要重命名 Azure Synapse Analytics 或并行数据仓库中的数据库,可使用 RENAME (Transact-SQL) 语句。

限制和约束

  • 无法重命名系统数据库。
  • 在其他用户正在访问数据库时,无法更改数据库名称。
  • 重命名数据库时,不会更改磁盘上数据库文件的物理名称,也不会更改文件的逻辑名称。 有关详细信息,请参阅 数据库文件和文件组
  • 无法重命名在活动异地复制关系中配置的 Azure SQL 数据库。

权限

需要对数据库拥有 ALTER 权限。

使用 SQL Server Management Studio

使用以下步骤通过 SQL Server Management Studio 重命名 SQL Server 或 Azure SQL 数据库。

  1. 在 SQL Server Management Studio 中选择“对象资源管理器”。 按 F8 打开“对象资源管理器”。 或者,在顶部菜单上选择“视图”,然后选择“对象资源管理器”

  2. 在“对象资源管理器”中,连接到某个 SQL Server 实例,然后展开该实例。

  3. 请确保该数据库没有打开的连接。 如果使用 SQL Server,则可以将数据库设置为单用户模式,关闭任何打开的连接并防止其他用户在你更改数据库名称时进行连接。

  4. 在对象资源管理器中,展开“数据库”,右键单击要重命名的数据库,然后选择“重命名”

  5. 输入新的数据库名称,然后选择“确定”

  6. 如果数据库是默认数据库,请参阅重命名后重置默认数据库

  7. 刷新对象资源管理器中的数据库列表。

使用 Transact-SQL

通过将 SQL Server 数据库置于单用户模式,对其重命名

使用以下步骤通过 SQL Server Management Studio 中的 T-SQL 重命名 SQL Server 数据库,具体步骤包括:将数据库置于单用户模式,重命名,然后将数据库恢复多用户模式。

  1. 为实例连接到 master 数据库。
  2. 打开一个查询窗口。
  3. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例将 MyTestDatabase 数据库的名称更改为 MyTestDatabaseCopy

警告

为了快速获取独占访问权限,代码示例使用终止选项 WITH ROLLBACK IMMEDIATE。 这将导致所有未完成事务都将被回滚,并将立刻断开 MyTestDatabase 示例数据库的所有其他连接。

USE master;  
GO  
ALTER DATABASE MyTestDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE MyTestDatabase MODIFY NAME = MyTestDatabaseCopy;
GO  
ALTER DATABASE MyTestDatabaseCopy SET MULTI_USER;
GO
  1. (可选)如果数据库是默认数据库,请参阅重命名后重置默认数据库

重命名 Azure SQL 数据库

使用以下步骤通过 SQL Server Management Studio 中的 T-SQL 重命名 Azure SQL 数据库。

  1. 为实例连接到 master 数据库。

  2. 打开一个查询窗口。

  3. 请确保当前无人使用该数据库。

  4. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例将 MyTestDatabase 数据库的名称更改为 MyTestDatabaseCopy

    ALTER DATABASE MyTestDatabase MODIFY NAME = MyTestDatabaseCopy;
    

在重命名数据库之后备份

重命名 SQL Server 中的数据库后,请备份 master 数据库。 在 Azure SQL 数据库中无需进行该操作,因为会自动执行备份。

重命名后重置默认数据库

如果要重命名的数据库被设置为 SQL Server 登录名的默认数据库,则可能会遇到错误 4064 Cannot open user default database。 请使用以下命令将默认设置更改为已重命名的数据库:

USE [master]
GO
ALTER LOGIN [login] WITH DEFAULT_DATABASE=[new-database-name];
GO

后续步骤