SQL Server AlwaysOn 数据库无法自动播种,无法找到日志,原因如下

Nik*_*Nik 3 sql-server availability-groups sql-server-2017

我已将一个数据库添加到已经拥有一些数据库的可用性组,所有这些数据库都已播种并同步到辅助数据库。

最后一个似乎被添加到可用性组中,但被标记为“不同步”并且不会返回任何错误。我已经尝试了多次,结果相同。

我查看了扩展事件、事件查看器......什么也没有。单击仪表板中的“警告”没有任何有用的信息。辅助数据库上根本不存在数据库文件。我怀疑它在播种过程开始时就被阻止了(但显然是在“添加到 AG”向导中的初始验证之后)。

我有一种明显的感觉,SQL Server 一定正在将相关的故障消息记录到一些我不知道的 DMV 中。

是否有一个规范的指南来指导人们应该在所有地方寻找与AlwaysOn相关的错误?

Jos*_*ell 6

在辅助副本上,您应该能够在sys.dm_hadr_automatic_seedingDMV 中查看播种尝试的状态/结果。这包括诸如current_statefailure_state、 和 之类的列failure_state_desc,以及与时间相关的列,它们应该可以让您对播种问题有一个很好的概述。

\n\n

我经常看到写入 SQL Server 错误日志(也在辅助副本上)的播种错误,我认为您没有提到在那里查看:

\n\n

SSMS 错误日志的屏幕截图

\n\n

我经常忘记做的一件事是在辅助副本上运行它:

\n\n
ALTER AVAILABILITY GROUP yourAgName GRANT CREATE ANY DATABASE;\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:如果您有兴趣查看哪些副本具有自动播种权限,请查看 Sean Gallardy 的这篇博客文章:自动播种 \xe2\x80\x93 哪些副本有权限?

\n\n

完成此操作后,您可以通过在主服务器上运行以下命令来尝试重新播种:

\n\n
ALTER AVAILABILITY GROUP yourAgName\n    MODIFY REPLICA ON \'SecondaryReplicaInstanceName\' \n    WITH (SEEDING_MODE = AUTOMATIC);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这通常会让我启动并运行。

\n\n
\n\n

就这个问题而言:

\n\n
\n

是否有一个规范的指南来指导人们应该在所有地方寻找与AlwaysOn相关的错误?

\n
\n\n

这里有一篇来自 SQL Server 团队的精彩博客文章:故障转移检测实用程序 \xe2\x80\x93 可用性组故障转移分析变得轻松

\n\n

它专门针对故障转移进行故障排除,但它列出了您将看到 AG 错误和诊断信息的主要位置:

\n\n
    \n
  • SQL错误日志
  • \n
  • Always On 可用性组扩展事件日志
  • \n
  • 系统运行状况扩展事件日志
  • \n
  • 系统日志
  • \n
  • Windows集群日志
  • \n
\n