Текущее время: Вс, июл 20 2025, 21:26

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 13:59 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Всем привет!

Нужно проверить может ли объект быть заблокирован из текущего процесса (т.е. не заблокирован ли другим процессом), при этом не выполняя блокировку. Функция ENQUEUE_READ не подходит т.к. она просто возвращает список записей из SM12, а по ним не поймешь - блокировка установлена текущим процессом или нет.

Т.е. в целом задача такова: понять прошла бы блокировка, если бы была вызвана по настоящему.

Способ заблокировать и сразу разблокировать тоже не очень красивый.

Есть какие-то хорошие варианты?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
profiteer написал(а):
Способ заблокировать и сразу разблокировать тоже не очень красивый.

почему? :o

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:20 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Цитата:
Способ заблокировать и сразу разблокировать тоже не очень красивый.

Есть какие-то хорошие варианты?


Я думаю, этот вариант самый подходящий (и, возможно, единственный).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:31 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Art386 написал:
Цитата:
Способ заблокировать и сразу разблокировать тоже не очень красивый.

Есть какие-то хорошие варианты?


Я думаю, этот вариант самый подходящий (и, возможно, единственный).


А он быстро будет работать? Если, например, 5000 подобных вызовов сделать.
Не очень красивый - объект будет на короткое время заблокирован, хотя мне это и не нужно.

upd:
Вообще проверил сейчас, 2000 вызовов пролетели почти моментально. Так что может и нормальный способ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:51 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Только сильно с тысячами не увлекайтесь. А то на дамп налетите ;)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:59 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
Только сильно с тысячами не увлекайтесь. А то на дамп налетите ;)

Какого рода дамп? Если переполнение таблицы блокировок, так там исключение system_failure будет (и то если каждый раз не разблокировать. А у автора проверка: заблокировал, сразу разблокировал). Или какая-то другая особая ситуация подразумевается?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 14:59 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Пономарев Артем написал:
Только сильно с тысячами не увлекайтесь. А то на дамп налетите ;)


Какой дамп?
Вообще максимальное число объектов, которое таким образом будет проверяться - 5000. Но не одновременно, а по одному. Хотя, возможно, очень часто.
Не знаю, не сдохнет ли сервер блокировок с такой схемой.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 15:11 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Ок, а вот обратная задача:

как проверить, что объект уже заблокирован текущим процессом?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 15:25 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
profiteer написал(а):
Ок, а вот обратная задача:

как проверить, что объект уже заблокирован текущим процессом?


Тут, конечно, можно просто запоминать ID заблокированного объекта. А при разблокировании - его удалять.
Но может есть способ без подобного запоминания?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 15:53 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Art386, про него и писал. А как там у автора, мы кода не видели. Я на всякий случай предупредил.

profiteer, если нужно узнать что блокировка именно текущего процесса - то уже упомянутый вами ENQUEUE_READ дает достаточно информации.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 15:58 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
profiteer написал(а):
Ок, а вот обратная задача:

как проверить, что объект уже заблокирован текущим процессом?

Данный вопрос не совсем корректен. См. SAP Lock Concept

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Пн, июл 12 2010, 19:34 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Нашел как проверить наличие блокировки не выполняя блокировку и разблокирование:

http://help.sap.com/saphelp_nwes72/help ... ameset.htm

P.S.
Блин, до чего ж кривая документация у сапа. Вот две ссылки на один и тот же раздел: Sap Lock Concept. При этом в 1-й нет раздела про режимы U, V, W, а во второй - есть:

http://help.sap.com/erp2005_ehp_04/help ... ameset.htm
http://help.sap.com/saphelp_nwes72/help ... ameset.htm


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить заблокирован ли объект не выполняя блокировку
СообщениеДобавлено: Вт, июл 13 2010, 11:15 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Цитата:
режимы U, V, W

А вот это интересно, полезно бывает в документацию заглядывать... Так что я был не прав, что способ "заблокировать-разблокировать" единственный . Но для старых ядер это именно так (помнится, там были только режимы S E X и всё)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB