挂起可用性数据库 (SQL Server)

适用于:SQL Server

可以在 SQL Server 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 暂停 Always On 可用性组中的可用性数据库。 请注意,挂起命令需要对承载要挂起或恢复的数据库的服务器实例发出。

挂起命令的效果取决于您挂起的是辅助数据库还是主数据库,如下所示:

挂起的数据库 挂起命令的效果
辅助数据库 仅挂起本地辅助数据库,并且其同步状态变为 NOT SYNCHRONIZING。 其他辅助数据库不受影响。 挂起的数据库将停止接收和应用数据(日志记录),并且开始落在主数据库的后面。 可读辅助副本上的现有连接会保持可用状态。 可读辅助副本上挂起数据库的新连接在数据移动恢复之前一直处于禁用状态。 仅当使用侦听器和只读路由打开连接时,此行为才适用。

主数据库仍然可用。 如果您挂起相应的每个辅助数据库,则主数据库将公开运行。

** 重要提示 ** 当挂起辅助数据库时,对应主数据库的发送队列将累积未发送的事务日志记录。 与辅助副本的连接将返回在数据移动挂起时可用的数据。
主数据库 主数据库将停止数据移动到每个连接的辅助数据库。 主数据库将继续在公开模式下运行。 主数据库仍然保持对客户端可用,可读取辅助数据库上的现有连接保持可用并且可以建立新连接。

注意

挂起 AlwaysOn 辅助数据库并不直接影响主数据库的可用性。 但是,挂起辅助数据库可能会影响主数据库的冗余和故障转移功能。 这与数据库镜像相反,在数据库镜像中,镜像状态在镜像数据库和主数据库上都挂起。 挂起 AlwaysOn 主数据库将挂起所有相应辅助数据库上的数据移动,并且在恢复主数据库前针对该数据库的冗余和故障转移功能将停止。

开始之前

限制和局限

SUSPEND 命令只要被承载目标数据库的副本接受后就返回,但是实际上挂起数据库以异步方式发生。

先决条件

您必须连接到承载要挂起的数据库的服务器实例。 若要挂起主数据库和相应的辅助数据库,请连接到承载主副本的服务器实例。 若要挂起辅助数据库但保持主数据库可用,请连接到辅助副本。

建议

出现瓶颈时,短暂挂起一个或多个辅助数据库可能有助于暂时提高主副本的性能。 只要有一个辅助数据库仍挂起,就无法截断相应的主数据库的事务日志。 这将导致日志记录在主数据库上累积。 因此,我们建议您快速恢复或删除挂起的辅助数据库。 有关详细信息,请参阅本主题后面部分的跟进:避免出现已满事务日志

安全性

权限

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

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

使用 SQL Server Management Studio

挂起数据库

  1. 在对象资源管理器中,连接到承载要挂起的数据库所在的可用性副本的服务器实例,然后展开服务器树。 有关详细信息,请参阅本主题前面的 先决条件

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

  3. 展开该可用性组。

  4. 展开“可用性数据库”节点,右键单击该数据库,然后单击“挂起数据移动”。

  5. “挂起数据移动” 对话框中,单击 “确定”

    对象资源管理器通过更改数据库图标以显示一个暂停指示符,来指示已挂起该数据库。

注意

若要挂起此副本位置上的其他数据库,请对每个数据库重复执行步骤 4 和 5。

“使用 Transact-SQL”

挂起数据库

  1. 连接到承载要挂起数据库的副本的服务器实例。 有关详细信息,请参阅本主题前面的 先决条件

  2. 通过使用以下 ALTER DATABASE 语句,挂起数据库:

    ALTER DATABASE database_name SET HADR SUSPEND;

使用 PowerShell

挂起数据库

  1. 将目录 (cd) 更改为承载要挂起其数据库的副本的服务器实例。 有关详细信息,请参阅本主题前面的 先决条件

  2. 使用 Suspend-SqlAvailabilityDatabase cmdlet 挂起可用性组。

    例如,以下命令为可用性数据库 MyDb3 (位于 MyAg 服务器实例上的可用性组 Computer\Instance中)暂停数据同步。

    Suspend-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3  
    

    注意

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

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

跟进:避免出现已满事务日志

通常,在数据库上执行自动检查点操作时,事务日志将在下一个日志备份后截断到该检查点。 但是,当挂起辅助数据库时,当前的所有日志记录在主数据库上都保持活动状态。 如果填满该事务日志(因为它达到其最大大小或服务器实例耗尽空间),则数据库将无法再执行任何更新。

若要避免此问题,应执行以下操作之一:

解决事务日志已满的问题

Related Tasks

另请参阅

AlwaysOn 可用性组概述 (SQL Server)
恢复可用性数据库 (SQL Server)