恢复可用性数据库 (SQL Server)
适用于:SQL Server
在 SQL Server 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell,可以恢复 Always On 可用性组中已挂起的可用性数据库。 恢复挂起的数据库会将数据库置于 SYNCHRONIZING 状态。 恢复主数据库还将恢复挂起主数据库时导致挂起的任何辅助数据库。 如果任何辅助数据库是从承载辅助副本的服务器实例中本地挂起的,则该辅助数据库必须进行本地恢复。 一旦给定的辅助数据库和相应的主数据库处于 SYNCHRONIZING 状态,则在辅助数据库上将恢复数据同步。
注意
挂起和恢复 AlwaysOn 辅助数据库并不直接影响主数据库的可用性。 但是,暂停某一辅助数据库可能会在恢复这个暂停的辅助数据库之前影响主数据库的冗余和故障转移功能。 这与数据库镜像相反,在数据库镜像中,在恢复镜像前镜像状态在镜像数据库和主数据库上都挂起。 挂起 AlwaysOn 主数据库将挂起所有相应辅助数据库上的数据移动,并且在恢复主数据库前针对该数据库的冗余和故障转移功能将停止。
限制和局限
RESUME 命令只要被承载目标数据库的副本接受后就返回,但是实际上继续数据库以异步方式发生。
先决条件
- 您必须连接到承载要恢复的数据库的服务器实例。
- 可用性组必须联机。
- 主数据库必须处于联机状态且可用。
权限
需要对数据库拥有 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_name SET HADR RESUME;
使用 PowerShell
恢复辅助数据库
将目录 (cd) 更改为托管要恢复其数据库的副本的服务器实例。 有关详细信息,请参阅本主题前面的 先决条件。
使用 Resume-SqlAvailabilityDatabase cmdlet 恢复可用性组。
例如,下面的命令针对可用性组
MyDb3
中的可用性数据库MyAg
恢复数据同步。Resume-SqlAvailabilityDatabase ` -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
注意
若要查看 cmdlet 的语法,请在 PowerShell 环境中使用 Get-Help SQL Server cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell。
设置和使用 SQL Server PowerShell 提供程序