在sqlserver 2017中发布订阅中报错,内存访问冲突。补丁已打至最新。目前无法升级至2019。即使重装SQLServer后过一段时间也会重新出现此问题
数据库中查看进程 sp_replcmds 等待类型为:CMEMTHREAD
Replication-Replication Transaction-Log Reader Subsystem: agent XXX-AAA-1 failed. The process could not execute 'sp_replcmds' on 'XXX'.
现无法进行重现。希望能提供排查方式。如何排查出来内存访问冲突中分别是哪一方通过什么触发
新补充
HI,
现无法进行重现的意思是在相同系统与版本下发布订阅无法重现此问题。
关于回复中的两个链接地址:
1、https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/replication/error-replication-log-reader-agent-fails
2、https://repltalk.com/2019/01/31/the-process-could-not-execute-sp_replcmds/
均已做过尝试,
重启系统后出现错误信息为:EXCEPTION_ACCESS_VIOLATION
SqlDumpExceptionHandler: Process 386 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process. Error: 14151, Severity: 18, State: 1.
ErrorLog信息如下:
消息 SQL Server Assertion: File: <sosmemobj.cpp>, line=2772 Failed Assertion = 'pvb->FInUse ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted. Replication-Replication Transaction-Log Reader Subsystem: agent XXX-AAA-1 failed. The process could not execute 'sp_replcmds' on 'XXX'.
CHECKDB 已尝试过,没有问题。
在报错时,SqlServer有生成mdmp文件,是否有方式能做到直接分析出来分别是哪些内容导致的EXCEPTION_ACCESS_VIOLATION?