Текущее время: Пн, июл 28 2025, 15:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Чт, сен 02 2010, 15:09 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
birds написал(а):
Если не вдаваться в прочие подробности, то кусок программы, который не работает, выглядит так:
Code:
DELETE   ZTAB FROM TABLE LT_TAB.
  COMMIT WORK AND WAIT.

  INSERT ZTAB  FROM TABLE LT_TAB.


после COMMIT WORK AND WAIT.записи еще не удаляются,

Удаляются, просто обязаны удалиться :) Таблица LT_TAB в этот момент наверное пустая, или записи в ней лежат неправильные

birds написал(а):
если же DELETE поставить в отдельную программу, которая будет только удалять и на том заканчивать работать, то все сработает и записи удаляться.

Наверняка у вас где то ошибка в логике программы, не ищите чудес там где их нет

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 08:16 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
[quote="birds"]
Если не вдаваться в прочие подробности, то кусок программы, который не работает, выглядит так:
Code:
DELETE   ZTAB FROM TABLE LT_TAB.
  COMMIT WORK AND WAIT.

  INSERT ZTAB  FROM TABLE LT_TAB.


Приведите весь код от строки с DELETE до строки с INSERT и текст дампа.

_________________
Волю в кулак, мышцы в узду, работай себе и не ахай!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 11:24 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Цитата:
Удаляются, просто обязаны удалиться

На самом деле не удаляются. Если загрузка сервера большая commit and wait совсем не значит что после commit записи появятся/удалятся из базы.
Уже миллион раз такое было.
Я в таких критичных случая делал call function starting new task, и ждал пока в другой сессии не появятся данные. И только потом что начинал делать


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 12:17 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Serge69 написал:
Цитата:
Удаляются, просто обязаны удалиться

На самом деле не удаляются. Если загрузка сервера большая commit and wait совсем не значит что после commit записи появятся/удалятся из базы.
Уже миллион раз такое было.
Я в таких критичных случая делал call function starting new task, и ждал пока в другой сессии не появятся данные. И только потом что начинал делать

Вы с модулями обновления не путаете? Там может быть ситуация когда после commit work данные обновляются не сразу.
Либо с буферизованной таблицей могут быть нюансы, данные в буфере в какой то момент могут быть неконсистентными.
Кусок кода можете привести, где у вас данные не сразу появляются/удаляются при большой загрузке сервера?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 13:00 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Цитата:
Кусок кода можете привести, где у вас данные не сразу появляются/удаляются при большой загрузке сервера?

К сожалению не могу. Не помню не только в какой программе это было, даже на каком проекте.
Но то что это периодически приходилось делать, это факт.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 13:28 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Serge69 написал:
Цитата:
Кусок кода можете привести, где у вас данные не сразу появляются/удаляются при большой загрузке сервера?

К сожалению не могу. Не помню не только в какой программе это было, даже на каком проекте.
Но то что это периодически приходилось делать, это факт.

Ну варианты, при которых такой эффект возможен, я привел выше. А чтоб при прямом апдейте/вставке/удалении после коммита данные еще не обновились - в такое не верю, извините

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 13:33 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, мар 13 2007, 22:57
Сообщения: 71
ArmAnn написал:

Я в таких критичных случая делал call function starting new task, и ждал пока в другой сессии не появятся данные. И только потом что начинал делать


каким образом проверять. можно код


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 13:54 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Что типа этого. (Точнее по F1 на CALL FUNCTION)

call function qqq startin new task 'zzz' performing zz on end of task.

form zz.
recieve result from qqq

endform.

ну а внутри qqq просто чтение в цикле пока данные не появятся


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 16:58 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Почему не используете подсистему обновлений?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 17:38 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, мар 13 2007, 22:57
Сообщения: 71
Serge69 написал:
Что типа этого. (Точнее по F1 на CALL FUNCTION)

call function qqq startin new task 'zzz' performing zz on end of task.

form zz.
recieve result from qqq

endform.

ну а внутри qqq просто чтение в цикле пока данные не появятся


а по времени ограничение делать не надо? вдруг они очень долго не появятся?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 17:38 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, мар 13 2007, 22:57
Сообщения: 71
__Gennady написал(а):
Почему не используете подсистему обновлений?


как, подскажите, пожалуйста


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Commit work - не срабатывает
СообщениеДобавлено: Пт, сен 03 2010, 17:53 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
best practice. Все изменения данных локализуются в ФМ обновлений, которые вызываются call function...in update task. Они отработают при явном commit work.
Commit work - в асинхронном режиме
Commit work and wait - в синхронном режиме
команда set update task local позволят запустить обновления в контексте программы.
Такой подход позволяет добиться атомарности операций с БД - обновления либо отработают все, либо не отработает ни одно, не будет промежуточных состояний, когда половина сохранилась, а половина нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

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


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

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


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

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