Jika panggilan ke SP1 yang diikuti oleh SP2 bersifat atomik, panggilan tersebut harus digabungkan dalam T-SQL.Atau kehilangan transaksi c#. Anda memperpanjang transaksi yang tidak perlu dengan bolak-balik.
Juga, mengapa UPDLOCK pada SP1UPDLOCK tetapi tidak untuk SP1? Saya tidak bisa melihat mengapa. Jika masalahnya adalah petunjuk kunci, jangan gunakan itu. Jika ada sesuatu yang bisa serial (mengapa?) sekali lagi, buat itu menjadi satu panggilan atom
Perhatikan bahwa defaultnya adalah READ COMMITTED
Akhirnya, maksud Anda "semaphore" tidak mengunci? Menggunakan sp_getapplock akan mengontrol aliran melalui kode tanpa menggunakan kunci pada data