镜像状态 (SQL Server)

适用范围:SQL Server

数据库镜像会话期间,镜像数据库一直处于一种特定状态(镜像状态)。 数据库的状态反映了通信状态、数据流和伙伴之间数据的差异。 数据库镜像会话采用的状态与主体数据库相同。

在整个数据库镜像会话期间,服务器实例相互监视。 伙伴使用镜像状态监视数据库。 除 PENDING_FAILOVER 状态外,主体数据库和镜像数据库始终处于同一状态。 如果为会话设置一个见证服务器,则每个伙伴都将使用其连接状态(CONNECTED 或 DISCONNECTED)监视该见证服务器。

可能的数据库镜像状态如下所示:

镜像状态 说明
SYNCHRONIZING 镜像数据库的内容滞后于主体数据库的内容。 主体服务器正在将日志记录发送到镜像服务器(正在将更改应用于镜像数据库以使其前滚)。

在数据库镜像会话开始时,数据库处于 SYNCHRONIZING 状态。 主体服务器为数据库提供服务,同时镜像服务器尽量与主体服务器保持同步。
SYNCHRONIZED 当镜像服务器与主体服务器几乎保持同步时,镜像状态将更改为 SYNCHRONIZED。 只要主体服务器继续向镜像服务器发送更改,并且镜像服务器继续将更改应用于镜像数据库,数据库就会保持此状态。

如果将事务安全性设置为 FULL,则 SYNCHRONIZED 状态同时支持自动故障转移和手动故障转移,并且在故障转移后不会丢失数据。

如果关闭事务安全性,则即使处于 SYNCHRONIZED 状态,也总可能丢失某些数据。

在 SQL Server Management Studio 中,数据库的状态将显示为“正在还原”。 如需获取实际状态,请在 sys.database_mirroring 中查询 mirroring_state_desc
SUSPENDED 数据库的镜像副本不可用。 主体数据库运行时不向镜像服务器发送任何日志,这种情况称为“运行已公开” 。 这是故障转移后的状态。

如果发生重做错误或管理员暂停会话,则会话也可能会变为 SUSPENDED 状态。

SUSPENDED 是在伙伴关闭和启动时都能存在的持久性状态。
PENDING_FAILOVER 此状态只在故障转移开始之后的主体服务器中存在,但此时服务器尚未转换到镜像角色。

当故障转移开始时,主体数据库将进入 PENDING_FAILOVER 状态,快速终止任何用户连接,并在此后不久便接管镜像角色。
DISCONNECTED 伙伴已失去与其他伙伴的通信。

另请参阅

监视数据库镜像 (SQL Server)