Учитывая следующее:
if object_id('MyTable') is null create table MyTable( myColumn int )
Разве не возможно, чтобы два отдельных вызывающих абонента одновременно оценивали object_id ('MyTable') как нулевое и поэтому оба пытались создать таблицу.
Очевидно, что один из двух вызывающих абонентов в этом сценарии потерпит неудачу, но в идеале ни один вызывающий не должен потерпеть неудачу, вместо этого один должен блокировать, а другой должен создать таблицу, тогда заблокированный вызывающий объект увидит object_id ('MyTable') как не ноль продолжить.
На что я могу применить эксклюзивную блокировку, чтобы я не блокировал больше, чем это абсолютно необходимо?