SP1 への呼び出しに続く SP2 への呼び出しがアトミックである場合は、それらを T-SQL で結合する必要があります。そうしないと、C# トランザクションが失われます。往復で不必要に取引を長引かせています。
また、なぜ SP1UPDLOCK には UPDLOCK があるのに、SP1 にはありませんか?理由がわかりません。問題がロック ヒントである場合は、使用しないでください。何かがシリアライズ可能である場合 (なぜ?)、もう一度、単一のアトミック呼び出しにします
いずれにせよ、デフォルトは READ COMMITTED であることに注意してください
最後に、ロックではなく「セマフォ」ということですか? sp_getapplock の使用 データのロックを使用せずにコードのフローを制御します