LCK_M_SCH_S, блокировка стабильности схемы заставила мой хранимый процесс ждать навсегда. Есть ли способ избежать или преодолеть это?LCK_M_SCH_S, блокировка стабильности схемы, вызывающая бесконечное ожидание выполнения proc
ответ
LCK_M_SCH_S - это блокировка стабильности схемы. Эта блокировка используется, когда запросы компилируются и выполняются. Длительная блокировка этого типа блокировки предполагает, что у вас есть длинный запрос в одной или нескольких ваших базах данных. Помимо пакетов этих длинных запросов, нет простого способа обойти этот тип блокировки.
Нет, просто доступ к master db для получения информации об объекте из любой базы данных на сервере sql. – user7874305
@jacodegroot, LCK_M_SCH_S - это блокировка стабильности схемы. Блокировка изменения схемы - LCK_M_SCH_M. –
После комментария Дэн Гузмана я поменял свой ответ, чтобы отразить это блокировка стабильности схемы, а не блокировка схемы – Jaco
К сожалению, мой вопрос был не ясен, но у меня есть решение, вдохновленный Ответ Жако де Гроот в Этот замок должен был другой ХП из masterdb, sp_helpconstraint, используется для поиска ограничений по таблицам в текущей базе данных. Я использовал это в своем Proc, чтобы получить Constraints Details на таблицах/представлениях, которые я применял на . Просмотрел, что вызвало LCK_M_SCH_S, как я нашел. Перед тем, как применить этот Proc, я тестировал объект (независимо от того, является ли тип «U» или нет), он отлично работает.
определение процедуры ????? –
Это proc с динамическим запросом, который использует sys.objects, sys.collumns и sys.types для получения информации об объекте из любой базы данных на сервере sql. – user7874305
Можете ли вы разместить запрос или часть запроса? – Jaco