问题背景

线上部署开两个端口,A用来上传用户信息,B用来处理用户信息;两个接口里都加上了事务;
A上传用户信息后会去调用B,去处理用户信息;这时候出现问题,A在事务里去调用B,B要处理A上传的信息时发现表被锁了;A在等B响应;B在等A释放表,最后形成死循环;导致接口一直无法响应;
//查看表锁情况命令
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
//释放表锁命令
declare @spid int
Set @spid = 54 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
解决方案:
在A上传用户信息时;上传结束后再去调用B去处理信息;