从可用性组中删除辅助数据库 (SQL Server)

适用于SQL Server

本主题介绍如何在 SQL Server 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 从 Always On 可用性组中删除辅助数据库。

先决条件和限制

  • 只有辅助副本支持该任务。 您必须连接到承载要从中删除数据库的辅助副本的服务器实例。

权限

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

使用 SQL Server Management Studio

从可用性组中删除辅助数据库

  1. 在对象资源管理器中,连接到承载您要从中删除一个或多个辅助数据库的辅助副本的服务器实例,然后展开服务器树。

  2. 依次展开“Always On 高可用性”节点和“可用性组”节点。

  3. 选择可用性组,然后展开 “可用性数据库” 节点。

  4. 此步骤取决于您是要删除多个数据库组,还是只删除一个数据库,如下所示:

  5. 右键单击选定的一个或多个数据库,然后在命令菜单中选择“删除辅助数据库”

  6. “从可用性组删除数据库” 对话框中,要删除所有列出的数据库,则单击 “确定”。 如果您不想删除所有列出的数据库,请单击 “取消”

“使用 Transact-SQL”

从可用性组中删除辅助数据库

  1. 连接到承载辅助副本的服务器实例。

  2. 使用 ALTER DATABASE 语句的 SET HADR 子句 ,如下所述:

    ALTER DATABASE database_name SET HADR OFF

    其中, database_name 为要从其所属的可用性组中删除的辅助数据库的名称。

    下面的示例将本地辅助数据库 MyDb2 从其可用性组中删除。

    ALTER DATABASE MyDb2 SET HADR OFF;  
    GO  
    

使用 PowerShell

从可用性组中删除辅助数据库

  1. 将目录 (cd) 更改为托管辅助副本的服务器实例。

  2. 使用 Remove-SqlAvailabilityDatabase cmdlet,指定要从可用性组中删除的可用性数据库的名称。 当您连接到承载辅助副本的服务器实例时,只能从可用性组中删除本地辅助数据库。

    例如,下面的命令从名为 MyDb8 的服务器实例承载的次要副本中删除辅助数据库 SecondaryComputer\Instance。 与已删除的辅助数据库的数据同步将停止。 此命令将不会影响主数据库或任何其他辅助数据库。

    Remove-SqlAvailabilityDatabase `  
    -Path SQLSERVER:\Sql\SecondaryComputer\InstanceName\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb8  
    

    注意

    若要查看 cmdlet 的语法,请在 PowerShell 环境中使用 Get-Help SQL Server cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell

设置和使用 SQL Server PowerShell 提供程序

跟进:从可用性组中删除辅助数据库之后

删除辅助数据库之后,它不再加入到可用性组中,有关删除的辅助数据库的所有信息都会被可用性组丢弃。 删除的辅助数据库处于 RESTORING 状态。

提示

在删除辅助数据库后的较短时间中,你可能能够通过将其重新联接到可用性组,在数据库上重新启动 AlwaysOn 数据同步。 有关详细信息,请参阅将辅助数据库联接到可用性组 (SQL Server)

此时,可以通过多种备选方法处理删除的辅助数据库:

  • 如果不再需要该辅助数据库,则可以将其删除。

    有关详细信息,请参阅 DROP DATABASE (Transact-SQL)删除数据库

  • 如果当辅助数据库已从可用性组中删除后要访问它,则可以恢复此数据库。 但是,如果恢复删除的辅助数据库,则会有两个同名的、独立但不同的数据库处于联机状态。 您必须确保客户端仅可访问当前主数据库。

    有关详细信息,请参阅恢复数据库而不还原数据 (Transact-SQL)

另请参阅

AlwaysOn 可用性组概述 (SQL Server)
从可用性组中删除主数据库 (SQL Server)