监控消息列表打开报错“值不能为null”
【问题描述】
(说明提示、报错在做什么操作时出现的和报错截图)
星空产品使用【监控消息列表】提示“值不能为null。参数名:key”,如下图所示:
【业务场景】
业务场景介绍:
1、【消息通知列表】点击【监控消息】打开【监控消息列表】
【原因分析】
【监控消息】生成的对应【监控方案】设置的【监控明细显示设置】存在【脏数据】引起。
可以通过下面【分析sql语句】l检查是否存在异常:
--监控方设置监控明细显示存在脏数据查询sql语句
SELECT * FROM (
SELECT T0.FWARNID 方案Id,T1.FBILLNO 方案编码,COUNT(1) FCOUNT
FROM T_BAS_WARNDISPLAYMAIN T0
LEFT JOIN T_BAS_WARNSOLUTION T1 ON T0.FWARNID = T1.FID
GROUP BY T0.FWARNID,T1.FBILLNO
) T
WHERE T.FCOUNT > 1
【解决方案】
方案一、【分析sql语句】查询到监控方案编码,【监控方案列表】找到有问题的监控方案,复制一份新的监控方案并启用,【停用】存在数据异常的监控方案
方案二、使用下面的修复sql语句进行数据修复(注:执行脚本之前请先完成备份数据中心)
(注:执行脚本之前请做好数据备份,请从Sql Sever服务做好数据中心实体的备份)
/*
--修复数据
DELETE
FROM
T_BAS_WARNDISPLAYMAIN
WHERE FID IN(
SELECT FID
FROM
T_BAS_WARNDISPLAYMAIN
WHERE FWARNID IN
(
SELECT T.FWARNID
FROM (
SELECT T0.FWARNID,T1.FBILLNO,COUNT(1) FCOUNT
FROM T_BAS_WARNDISPLAYMAIN T0
LEFT JOIN T_BAS_WARNSOLUTION T1 ON T0.FWARNID = T1.FID
GROUP BY T0.FWARNID,T1.FBILLNO
) T
WHERE T.FCOUNT > 1
)
)
AND FID NOT IN
(
SELECT
MIN(FID) FMINFID
FROM
T_BAS_WARNDISPLAYMAIN
WHERE FWARNID IN
(
SELECT T.FWARNID
FROM (
SELECT T0.FWARNID,T1.FBILLNO,COUNT(1) FCOUNT
FROM T_BAS_WARNDISPLAYMAIN T0
LEFT JOIN T_BAS_WARNSOLUTION T1 ON T0.FWARNID = T1.FID
GROUP BY T0.FWARNID,T1.FBILLNO
) T
WHERE T.FCOUNT > 1
)
GROUP BY FWARNID
)
--*/
一、主要步骤
(先概括主要步骤,让用户大致了解整体流程)
二、详细操作
方案一、
【分析sql语句】查询到监控方案编码
根据1获取到【监控方案编码】,从【监控方案列表】查询到【旧监控方案】,点击复制新增【新监控方案】
3. 停用【旧监控方案】
方案一:
优点:直接从星空系统界面操作可以完成,避免直接执行脚本出现的操作难问题
缺点:新监控方案生成的消息可以正常打开,历史监控消息还是无法打开,会提示数据存在报错
方案二、
优点:新生成的消息可以正常打开,历史监控消息也可以正常打开
缺点:直接执行脚本出现的操作有一定难度
【注意事项】
(方案二、执行sql脚本前请及时做好数据中心备份)
监控消息列表打开报错“值不能为null”
本文2024-09-23 03:45:57发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160964.html