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