我正在使用 SSIS 实现 upsert 操作
一般的包结构是
<Begin transaction>
<read config values>
<Data flow task>
<commit transaction>
数据流任务包括
<oledb Source>
<Lookup>
<matched output to Update using oledbcommand>
<No Match output to Insert using oledbcommand>
当只有插入时,包第一次运行良好
在第二次运行时,当发生一组更新,然后发生插入时,Update 语句最终在目标表上持有一个排他锁,进入睡眠状态AWAITING COMMAND
,而 Insert 被挂起并继续等待锁.
为了检查最后一段中的语句,我使用了以下命令:
select * from master.sys.sysprocesses where blocked<>0 or spid in (select blocked from master.sys.sysprocesses where blocked <>0)
有没有办法解决这种锁定情况?