我们的新数据库几乎每天都会崩溃。它是与其他 5 台服务器位于同一硬件上的虚拟服务器,其中两台是相同的 MS SQL2008sp1,两台是 Oracle 11g,因此我几乎可以排除硬件问题。
服务器具有专用的本地 LUN、4vCPU 和 8GB 内存,以及 2GB Windows 交换文件。它运行 4 个实例。主实例限制为 5GB 内存,并行度设置为 4,在 MS SQL 2008 SP1 @ Windows Server 2008 Enterprise R2 x64 上运行。
只有那个主实例崩溃了。崩溃后,任何东西都无法连接到它,甚至不可能通过服务管理器将其关闭。
我在日志中发现的是:
***堆栈转储正在发送到 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0081.txt
SqlDumpExceptionHandler:进程 4788 生成了致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 正在终止此进程。
完整日志可见于:http://kabl.org/files/SQLDump0081.txt
第二个崩溃日志稍后出现在:http://kabl.org/files/SQLDump0082.txt
我已经使用 Microsoft 工具分析了 mini crashdump,但没有得到令人满意的结果。如果有帮助,请看这里:http://kabl.org/files/SQLDump0081.mdmp
任何想法都非常受欢迎,因为几乎每天重启服务器变得越来越麻烦:)
祝贺,-Matija
答案1
您的崩溃转储分析结果是什么?C0000005 错误是缓冲区溢出错误。由于您正在运行其他实例,我预计小型转储分析会显示存在导致问题的驱动程序。