SSISを使用してアップサート操作を実装しています
一般的なパッケージ構造は次のとおりです。
<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>
インサートしかない場合、パッケージは最初は正常に動作します
2回目の実行で、一連の更新が発生し、その後挿入が発生すると、Updateステートメントは宛先テーブルで排他ロックを保持し、でスリープ状態AWAITING COMMAND
になり、Insertは一時停止され、ロックを待機し続けます。 。
最後のパラグラフのステートメントを確認するために、次のコマンドを使用しました。
select * from master.sys.sysprocesses where blocked<>0 or spid in (select blocked from master.sys.sysprocesses where blocked <>0)
このロック状態を修正する方法はありますか?