当我在写入#temp的事务中使用Cross apply OpenJson时遇到一个奇怪的问题。
当我运行以下代码时,
begin tran
drop table if exists #temp
SELECT ROW_NUMBER() over (PARTITION by StatementAnswerId order by (select 1) ) as row_num,* INTO #temp FROM [Submissions].[StatementAnswer] with(NOLOCK) CROSS APPLY OPENJSON(StatementJson) with (questionId varchar(200) '$.questionId' )
我遇到如下死锁问题:
1205级13状态78行11事务(进程ID 68)的消息为 锁死与另一个通信缓冲区资源 过程,并已被选为死锁受害者。重新运行 交易。
但没有收到任何错误,当我避免使用openJson块时,
begin tran
drop table if exists #temp
SELECT ROW_NUMBER() over (PARTITION by StatementAnswerId order by (select 1) ) as row_num,* INTO #temp FROM [Submissions].[StatementAnswer] with(NOLOCK)
任何线索,为什么openJson与写#temp一起导致死锁?