运用MS SQL视图+存储过程+作业计划功能实现自动定时清除金蝶K3非正常使用记录

本篇文章是2023年7月20日《运用MS SQL作业自动定时清除金蝶K3非正常使用记录》文章的改进,实现了运行过程的全自动化。
在日常使用K3系统的过程中,经常在打开单据、凭证或过账、结账等操作时,会有以下两类情况出现
第一类情况:“当前用户使用的功能与其他用户存在冲突,目前无法使用”的提示,我们通常的解决方案是:
1、软件左上角【系统】→【客户端工具包】,打开【客户端工具包】窗口;
2、单击【系统工具】→【网络控制工具】,登陆报错的帐套,弹出【网络控制】窗口;
3、单击选中需要清除的记录;
4、单击菜单【控制】→【清除当前任务】,即清空网络控制工具中选中的记录。
第二类情况:实际登录使用的用户数没有超过最大站点数,但系统会有类似“未检测到加密狗或已经达到最大站点数,并且该账套已使用超过三个月。”的提示,我们通常的解决方案通常是:
登录账套管理,打开【系统】→【系统使用状况】→清除超时在线的用户记录
上述两类问题产生的原因通常是:
1、K3用户被强制退出;
2、K3使用过程中出错,导致进程中断;
3、因用户电脑断电、非正常重新启动、系统崩溃导致原有记录不能退出;
上述问题的重复出现,让人不堪其扰,在这篇文章https://wenku.my7c.com/article/469987012330414848?productLineId=7,我写了一个简单的执行语句,然后利用数据库的作业机制,自动定时清除K3的非正常使用记录,尽可能的减少人工删除非正常使用记录的烦恼。
但在实际运用时,如果有账套增加或减少,还需要每次手工去调整作业步骤的内容,不然就会有错误提示导致作业无法完全执行,因此我有了改进的想法,具体如下:
第1步、通过视图直接调取账套管理表的数据库实体名称;
第2步、通过存储过程把视图中数据库实体对应的账套的超时使用记录进行清理;
第3步、通过作业机制定时执行存储过程;
通过以上三步完成清除非正常使用记录的自动化。
以下内容已通过测试并已实际运行多日,
操作系统环境:WINDOWS SERVER 2008R2 x64
数据库环境:MS SQL SERVER 2008R2 x64
金蝶软件:K3
具体语句如下:
第1步在KDAcctDB数据库中创建视图的SQL语句:
CREATE VIEW ZZVW_RegAcctAis AS
SELECT row_number () OVER (ORDER BY t1.FAcctID) AS FNo --这里给查询出的记录自动加上序号列
, t1.FAcctID --这里是账套数据库实体的管理内码
, t1.FDBName --这里是账套数据库实体名
, t1.FAcctName --这里是账套名称
, 'DELETE FROM ' + t1.FDBName + '.dbo.t_FuncControl' AS FSQLDeleUsingRec --这里是后期执行用的语句
, '--' + t1.FAcctNumber + ',' + t1.FAcctName AS FSQLAcctAisMark --这里是账套名称,与金蝶软件账套名称一致
F
运用MS SQL视图+存储过程+作业计划功能实现自动定时清除金蝶K3非正常使用记录
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



