SQL AG 翻转。SQL 2019 cu14 SQL Server 错误 <"interop.cpp">,行=125 断言失败 = 'nullptr != error' ,

Kri*_*son 5 sql-server

有没有其他人看过这个,或者知道我还应该寻找什么。我的 sql 服务器上出现错误,错误将会发生,然后大约 50% 的时间 SQL 集群服务会失败。导致AG翻转到另一台服务器。我已经创建了一个案例,怀疑这是一个错误,但我还没有收到回复。

我已重新启动,并对所有数据库运行 checkdb。

错误消息:

日期 2022 年 1 月 24 日下午 4:21:53 记录 SQL Server(当前 - 2022 年 1 月 24 日下午 5:10:00)

来源spid1063

消息 SQL Server 断言:文件:<"interop.cpp">,行=125 失败断言 = 'nullptr!= 错误'。此错误可能与时间相关。如果重新运行该语句后错误仍然存​​在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重新启动服务器以确保内存中的数据结构未损坏。日期 2022 年 1 月 24 日下午 4:21:53 记录 SQL Server(当前 - 2022 年 1 月 24 日下午 5:10:00)

来源spid1063

消息 系统断言检查失败。检查 SQL Server 错误日志以获取详细信息。通常,断言失败是由软件错误或数据损坏引起的。要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。如果您同意在安装过程中将转储发送给 Microsoft,则小型转储将发送给 Microsoft。Microsoft 可能会在最新的 Service Pack 或技术支持的修补程序中提供更新。

编辑:添加一些细节。15.0.4188.2,3 个服务器上的 SQL AG,异步,手动故障转移。内存优化临时数据库已打开。这两个windows事件与sql事件的时间相匹配。

Windows Server 故障转移群集在租用超时期限内未从托管可用性组“AG”的 SQL Server 接收到进程事件信号。

可用性组“AG”与 Windows Server 故障转移群集之间的租约已过期。SQL Server 实例与 Windows Server 故障转移群集之间出现连接问题。要确定可用性组是否正确进行故障转移,请检查 Windows Server 故障转移群集中相应的可用性组资源。

我放松了心跳和阈值,看看这是否可以防止 AG 在调查时翻转。
https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/hadr-cluster-best-practices?tabs=windows2012#heartbeat-and-threshold

这些设置似乎可以防止翻转,但我仍然遇到 nullptr 问题。目前仍在调查中。

Sea*_*ser 6

这是一个问题,应该在即将发布的补丁中修复。在此期间,您可以禁用内存优化的 TempDB,这应该可以解决问题(直到打补丁,然后您可以重新打开它)。

AG 失败的原因是检查失败,因为应用程序线程在转储生成期间被冻结,因此它们不会响应,并且租约或 *alive 检查都会失败。