适用于:SQL Server
可以在 SQL Server 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 暂停 Always On 可用性组中的可用性数据库。 请注意,挂起命令需要对承载要挂起或恢复的数据库的服务器实例发出。
挂起命令的效果取决于您挂起的是辅助数据库还是主数据库,如下所示:
| 已暂停的数据库 | 挂起命令的效果 |
|---|---|
| 辅助数据库 | 仅本地辅助数据库会被挂起,其同步状态变为 NOT SYNCHRONIZING。 其他辅助数据库不受影响。 挂起的数据库将停止接收并应用数据(日志记录),并开始落后于主数据库。 可读辅助副本上的现有连接会保持可用状态。 在恢复数据移动之前,不允许与可读次要副本上的已挂起数据库建立新连接。 仅当使用侦听器和只读路由打开连接时,此行为才适用。 主数据库仍然可用。 如果暂停每个对应的辅助数据库,主数据库将处于暴露状态。 ** 重要提示 ** 当辅助数据库处于挂起状态时,对应主数据库的发送队列将积累尚未发送的事务日志记录。 与辅助副本的连接返回的是数据移动暂停时可用的数据。 |
| 主数据库 | 主数据库将停止数据移动到每个连接的辅助数据库。 主数据库将继续在公开模式下运行。 主数据库仍然保持对客户端可用,可读取辅助数据库上的现有连接保持可用并且可以建立新连接。 |
注意
挂起 AlwaysOn 辅助数据库并不直接影响主数据库的可用性。 但是,暂停辅助数据库可能会影响主数据库的冗余和故障转移能力。 这与数据库镜像相反,在数据库镜像中,镜像状态在镜像数据库和主数据库上都挂起。 挂起 Always On 主数据库会暂停所有对应辅助数据库上的数据移动,并且该数据库的冗余和故障转移功能都将停止,直到主数据库恢复为止。
开始之前:
要挂起数据库,请使用:
跟进:避免事务日志已满
开始之前
限制和局限
SUSPEND 命令一旦被托管目标数据库的副本接受,便会立即返回,但数据库的实际挂起是异步进行的。
先决条件
您必须连接到托管您要挂起的数据库的服务器实例。 若要挂起主数据库和相应的辅助数据库,请连接到承载主副本的服务器实例。 若要暂停辅助数据库,同时保持主数据库可用,请连接到辅助副本。
建议
出现瓶颈时,暂时挂起一个或多个辅助数据库,可能有助于暂时提升主副本上的性能。 只要某个辅助数据库仍处于挂起状态,就无法截断对应主数据库的事务日志。 这将导致日志记录在主数据库上累积。 因此,我们建议您快速恢复或删除挂起的辅助数据库。 有关更多信息,请参阅本主题后面的内容中的后续:避免事务日志已满。
安全性
权限
需要对数据库拥有 ALTER 权限。
需要对可用性组具有 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。
使用 SQL Server Management Studio
挂起数据库
在对象资源管理器中,连接到承载要挂起的数据库所在的可用性副本的服务器实例,然后展开服务器树。 有关详细信息,请参阅本主题前面的 先决条件。
展开 Always On 高可用性 节点和 可用性组 节点。
展开该可用性组。
展开“可用性数据库”节点,右键单击该数据库,然后单击“挂起数据移动”。
在 “挂起数据移动” 对话框中,单击 确定。
对象资源管理器通过将数据库图标更改为显示暂停指示,表明该数据库已挂起。
注意
若要挂起此副本位置上的其他数据库,请针对每个数据库重复执行步骤 4 和 5。
“使用 Transact-SQL”
挂起数据库
连接到承载要挂起数据库的副本的服务器实例。 有关详细信息,请参阅本主题前面的 先决条件。
使用以下 ALTER DATABASE 语句暂停数据库:
ALTER DATABASE database_nameSET HADR SUSPEND;
使用 PowerShell
挂起数据库
将目录 (cd) 更改为承载要挂起其数据库的副本的服务器实例。 有关详细信息,请参阅本主题前面的 先决条件。
使用 Suspend-SqlAvailabilityDatabase cmdlet 挂起可用性组。
例如,以下命令将暂停名为
Computer\Instance的服务器实例上的可用性组MyAg中的可用性数据库MyDb3的数据同步。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 提供程序
后续:避免事务日志已满
通常,对数据库执行自动检查点后,该数据库的事务日志会在下一次日志备份后截断到该检查点。 但是,当辅助数据库处于挂起状态时,所有当前的日志记录在主数据库中仍保持活动状态。 如果填满该事务日志(因为它达到其最大大小或服务器实例耗尽空间),则数据库将无法再执行任何更新。
若要避免此问题,应执行以下操作之一:
为主数据库添加更多日志空间。
在日志填满之前恢复辅助数据库。 有关详细信息,请参阅恢复可用性数据库 (SQL Server)。
删除辅助数据库。 有关详细信息,请参阅从可用性组中删除辅助数据库 (SQL Server)。
解决事务日志已满的问题