请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

艳艳

金牌服务用户

148

主题

236

帖子

1010

积分

金牌服务用户

积分
1010
艳艳
金牌服务用户   /  发表于:2024-9-26 16:33  /   查看:131  /  回复:5
100金币
本帖最后由 艳艳 于 2024-9-26 16:57 编辑



这个“设变”服务端命令嵌套了一个“工单关闭sap接口1.2”的服务端命令,去执行api调用sap接口,api里设置了(执行将sap输出的记录直接添加到“报工收货sap输出”表格)此功能。

如下:嵌套的服务端命令不放置在事务命令里就可以正常调用sap并且添加了数据表



但是放进事务命令里就不行:




不知道是不是事务命令的底层逻辑影响,多线程操作了数据表致使数据表锁定了添加不了数据?
以上是简化的命令,不使用事务命令的话有什么办法可以保证嵌套的服务端命令和其他命令都执行或者都不执行吗?



补充一下:事务命令里不嵌套服务端命令,直接发送请求调用sap也是不可以的,也会遇到同样的数据库锁定的问题。




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

5 个回复

倒序浏览
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-9-26 18:02:59
沙发
您好,这个问题从最终的报错结果来看,是数据库死锁了。
从描述上来看,有下面猜测:调用 SAP 接口,接口里是否有操作和服务端命令相同的数据表。如果存在这种情况,可能是 SAP 接口里相关库表操作本身也有事务,和活字格事务一起使用出现了死锁问题。
可以这样尝试一下,在活字格事务里只调用 SAP 接口,不同时操作其他表,能否复现死锁问题呢?

回复 使用道具 举报
艳艳
金牌服务用户   /  发表于:2024-9-27 08:51:34
板凳
Simon.Sun 发表于 2024-9-26 18:02
您好,这个问题从最终的报错结果来看,是数据库死锁了。
从描述上来看,有下面猜测:调用 SAP 接口,接口 ...

测试过了,事务命令下,在发送http请求调用接口的代码里不执行操作数据库就不会锁死
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-9-27 09:27:55
地板
这样的话,SAP 接口本身是不是也有数据库操作,且和我们需要操作的表是同表同库的呢?
回复 使用道具 举报
艳艳
金牌服务用户   /  发表于:2024-9-27 09:52:36
5#
Simon.Sun 发表于 2024-9-27 09:27
这样的话,SAP 接口本身是不是也有数据库操作,且和我们需要操作的表是同表同库的呢?

不同表,但是我不清楚同库的意思
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-9-27 10:56:36
6#
您好,同库的意思就是 SAP 应用和我们活字格应用连接了同一个数据库,即连接的数据库地址和数据库名称是同一个。
死锁的问题比较难排查了,可以借助一些工具去收集下死锁日志,去做进一步的分析。比如,如果是 SQL Server 的话可以参考下面内容:
SqlServer数据库死锁排查方法_sqlserver怎么查看事务死锁日志-CSDN博客



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部