2015-03-28 17 views
-5

LCK_M_SCH_S, блокировка стабильности схемы заставила мой хранимый процесс ждать навсегда. Есть ли способ избежать или преодолеть это?LCK_M_SCH_S, блокировка стабильности схемы, вызывающая бесконечное ожидание выполнения proc

+1

определение процедуры ????? –

+0

Это proc с динамическим запросом, который использует sys.objects, sys.collumns и sys.types для получения информации об объекте из любой базы данных на сервере sql. – user7874305

+1

Можете ли вы разместить запрос или часть запроса? – Jaco

ответ

2

LCK_M_SCH_S - это блокировка стабильности схемы. Эта блокировка используется, когда запросы компилируются и выполняются. Длительная блокировка этого типа блокировки предполагает, что у вас есть длинный запрос в одной или нескольких ваших базах данных. Помимо пакетов этих длинных запросов, нет простого способа обойти этот тип блокировки.

+0

Нет, просто доступ к master db для получения информации об объекте из любой базы данных на сервере sql. – user7874305

+0

@jacodegroot, LCK_M_SCH_S - это блокировка стабильности схемы. Блокировка изменения схемы - LCK_M_SCH_M. –

+0

После комментария Дэн Гузмана я поменял свой ответ, чтобы отразить это блокировка стабильности схемы, а не блокировка схемы – Jaco

0

К сожалению, мой вопрос был не ясен, но у меня есть решение, вдохновленный Ответ Жако де Гроот в Этот замок должен был другой ХП из masterdb, sp_helpconstraint, используется для поиска ограничений по таблицам в текущей базе данных. Я использовал это в своем Proc, чтобы получить Constraints Details на таблицах/представлениях, которые я применял на . Просмотрел, что вызвало LCK_M_SCH_S, как я нашел. Перед тем, как применить этот Proc, я тестировал объект (независимо от того, является ли тип «U» или нет), он отлично работает.