在写入temp

时间:2019-05-16 12:10:23

标签: sql-server database-deadlocks

当我在写入#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一起导致死锁?

0 个答案:

没有答案