SQL Server 标准版中的镜像

Sun*_*ali 4 sql-server

我在 SQL Server 标准版中设置了数据库的镜像。

在此之后,我尝试查看数据是否已同步。

我无法通过获取数据库快照来检查数据,因为 SQL Server 标准版中不提供数据库快照。

是否有其他解决方案可用于验证数据是否同步?

Han*_*non 6

检查以下系统视图:

SELECT *
FROM master.sys.database_mirroring;
Run Code Online (Sandbox Code Playgroud)

那里有大量关于镜像数据库状态的信息。

如果该列mirroring_state_desc包含“SYNCHRONIZED”,那么它确实是同步的。

什么SYNCHRONIZED情况表示,从主所有未完成的事务已成功提交到镜像数据库。

如果它显示状态,SYNCHRONIZING则镜子在某种程度上“落后”于主体。

您还可以使用 Database Mirroring Monitor 应用程序来监控镜像数据库的状态。


Sha*_*nky 5

如果您在标准版上运行,则没有太多办法,您必须相信镜像正在完成其任务。在这种情况下,您必须使用 GUI 监视 SEND 队列和 REDO 队列,而不用担心数据是否在镜像上发送或更改是否反映。

SEND 队列的大小显示在主体服务器上生成了多少事务日志,但尚未发送到镜像服务器。如果不为零,则表示镜像状态未同步。此外,SEND 队列的大小表示主体数据库发生灾难时将发生的数据丢失量。

如果您发现 REDO 队列大小在增长,这意味着镜像服务器无法跟上从主体服务器发送的日志量。可能是镜像服务器上的额外工作负载阻止了镜像数据库日志尽可能快地重播。也可能是镜像服务器上的物理硬件不如主体服务器上的物理硬件。

REDO 队列大小显示镜像数据库中存在多少尚未在镜像数据库上重放的事务日志。

这两个将帮助您了解镜像服务器背后的主体有多少。读这个

或者,您可以将主体故障转移到镜像,但在故障转移之前确保该镜像与主体完全同步以避免任何数据丢失。(如果可能或在您有维护窗口时)检查镜像服务器的状态。IMO 故障转移是确定和证明更改实际上得到反映的最佳方式,如果您需要使用屏幕截图显示某些审计目的。