如何通过sql server内存转储信息确定错误类型
[问题描述]
连续碰到多家客户出现SQL Server日志出现大量dump文件的问题,整理了一下分析方法,供大家出现相应问题时进行分析处理。当SQL Server遇到问题或严重错误(严重程度不足以导致整个SQL Server进程崩溃)时,就会发生内存转储。
[操作步骤]
可以通过下面的脚本来检查SQL Server是否发生过内存转储。
SELECT [filename], creation_time, size_in_bytes/1048576.0 AS [Size (MB)]
FROM sys.dm_server_memory_dumps WITH (NOLOCK)
ORDER BY creation_time DESC OPTION (RECOMPILE);
或者在SQL Server的(%Program Files\Microsoft SQL Server\MSSQL1*.MSSQLSERVER\MSSQL\LOG)文件夹下有.mdmp后缀的文件.
在出现这种情况时,可以打开.txt后缀的文件,可以看到类似下面的信息
通过major和minor的值,说明错误号为5242,通过下面SQL,获取实际的错误类型。
select * from sys.sysmessages where error=5254 and msglangid=2052
根据上面的信息,说明某个库出现了损坏,此时,就需要通过dbcc checkdb来检查数据库,明确哪些表可能出现问题,然后进行相应的修复(注:并非所有的表都可以通过命令修复)。
提示:
对于数据库服务器,需要注意下面几个内容
1:不要直接关机
2:如果会有突发停电的风险,购买UPS电源
3:不要直接通过任务管理器kill SQL Server的服务进程
4:定期检查磁盘是否正常
备注:对应帖子:https://vip.kingdee.com/article/197651428347952640
如何通过sql server内存转储信息确定错误类型
本文2024-09-23 01:22:00发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-145479.html