Use um bloqueio de sessão por meio de sp_getapplock
Você está solicitando simultaneidade controlada pelo usuário e essa geralmente é a melhor maneira.
Isso permite que você espere ou aborte se o bloqueio já estiver retido por outro trabalho. Usamos em um ou 2 lugares para impedir que vários usuários forcem a mesma tarefa a ser executada sobreposta. Isso funciona bem.