从 Always On 可用性组中删除主数据库

适用于:SQL Server

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

先决条件和限制

  • 只有主副本支持该任务。 您必须连接到承载主副本的服务器实例。

权限

对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。

使用 SQL Server Management Studio

删除可用性数据库

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

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

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

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

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

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

“使用 Transact-SQL”

删除可用性数据库

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

  2. 按如下所示使用 ALTER AVAILABILITY GROUP 语句:

    ALTER AVAILABILITY GROUP group_name REMOVE DATABASE availability_database_name

    其中, group_name 是可用性组的名称, database_name 是要删除的数据库的名称。

    下面的示例将从 Db6 可用性组中删除名为 MyAG 的数据库。

    ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE Db6;  
    

使用 PowerShell

删除可用性数据库

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

  2. 使用 Remove-SqlAvailabilityDatabase cmdlet,指定要从可用性组中删除的可用性数据库的名称。 当您连接到承载主副本的服务器实例时,主数据库及其对应的辅助数据库将从可用性组中全部删除。

    例如,下面的命令从名为 MyDb9 的可用性组中删除可用性数据库 MyAg。 因为此命令在承载主副本的服务器实例上执行,所以,主数据库及其对应的所有辅助数据库都将从可用性组中删除。 在任何辅助副本上都不会出现针对此数据库的数据同步。

    Remove-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\PrimaryComputer\InstanceName\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb9
    

    注意

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

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

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

从其可用性组中删除可用性数据库后,将结束先前主数据库与对应的辅助数据库之间的数据同步。 以前的主数据库保持联机状态。 每个对应的辅助数据库都处于 RESTORING 状态。

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

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

    有关详细信息,请参阅 删除数据库

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

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

另请参阅

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