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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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