Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пропустить уже считанную строку / 20 сообщений из 20, страница 1 из 1
22.04.2019, 15:30
    #39804944
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
есть вебсервис, на который приходят http запросы
если строка принята в обработку одним запросом, то другой запрос ее не должен читать

просто лочить не желательно, иначе другие будут ждать

как правильно сделать?
...
Рейтинг: 0 / 0
22.04.2019, 15:33
    #39804951
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
И при чем тут MSSQL?
...
Рейтинг: 0 / 0
22.04.2019, 15:39
    #39804954
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
Гавриленко Сергей АлексеевичИ при чем тут MSSQL?
средствами СУБД хотелось бы сделать
...
Рейтинг: 0 / 0
22.04.2019, 15:45
    #39804957
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
listtoviewГавриленко Сергей АлексеевичИ при чем тут MSSQL?
средствами СУБД хотелось бы сделать

и как связана СУБД с приходящими http-запросами?
...
Рейтинг: 0 / 0
22.04.2019, 15:48
    #39804961
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
с помощью READPAST это делается
...
Рейтинг: 0 / 0
22.04.2019, 15:51
    #39804964
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
Посетительlisttoviewпропущено...

средствами СУБД хотелось бы сделать

и как связана СУБД с приходящими http-запросами?
попытался описать задачу
а то потом бы все равно спросили, "а зачем вам это?"
...
Рейтинг: 0 / 0
22.04.2019, 15:53
    #39804965
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
Rankatanс помощью READPAST это делается
спасибо читаю
...
Рейтинг: 0 / 0
22.04.2019, 18:41
    #39805049
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
listtoview,

можно так:
1. Открыть транзакцию клиентом.
2. Обновить в таблице блокировок поле-флаг в нужной строке =1.
3. Обработать данные.
4. Сбросить флаг =0.
5. Зафиксировать транзакцию клиентом.

Другим процессом читать таблицу блокировок с READPAST, он обновленную строку не увидит и чтение не остановится.
...
Рейтинг: 0 / 0
22.04.2019, 20:23
    #39805069
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
Владислав Колосовlisttoview,

можно так:
1. Открыть транзакцию клиентом.
2. Обновить в таблице блокировок поле-флаг в нужной строке =1.
3. Обработать данные.
4. Сбросить флаг =0.
5. Зафиксировать транзакцию клиентом.

Другим процессом читать таблицу блокировок с READPAST, он обновленную строку не увидит и чтение не остановится.

единственно только надо уточнить что c READPAST подсказкой надо правильно проектировать читающий запрос что бы попадал на блокированные ресурсы, а то может получиться что читать будет строки которые по факту не должен.
...
Рейтинг: 0 / 0
23.04.2019, 07:20
    #39805148
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
listtoviewесть вебсервис, на который приходят http запросы
если строка принята в обработку одним запросом, то другой запрос ее не должен читать

просто лочить не желательно, иначе другие будут ждать

как правильно сделать?а эти два запроса приходят одновременно?
...
Рейтинг: 0 / 0
23.04.2019, 07:22
    #39805149
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
А что должен делать второй запрос? Ждать то не должен. Вываливаться? Ошибку генерить?
...
Рейтинг: 0 / 0
23.04.2019, 10:03
    #39805204
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
andreymxА что должен делать второй запрос? Ждать то не должен. Вываливаться? Ошибку генерить?
второй запрос должен читать еще не обработанную никем строку
желательно не ждать, и, желательно, не отваливаться с ошибкой
...
Рейтинг: 0 / 0
23.04.2019, 10:04
    #39805205
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
andreymxlisttoviewесть вебсервис, на который приходят http запросы
если строка принята в обработку одним запросом, то другой запрос ее не должен читать

просто лочить не желательно, иначе другие будут ждать

как правильно сделать?а эти два запроса приходят одновременно?
да, это вебсервис по REST
они могут одновременно и в большом кол-ве приходить
...
Рейтинг: 0 / 0
23.04.2019, 10:10
    #39805210
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
andreymx,

есть идея добавить таблицу с PK
и инсертить туда Id обрабатываемой записи
кому повезет, тот и будет обрабатывать
тот кто упал с ошибкой, повторит попытку
ну и добавить поле InProcessing

ДедаЪ осоветовал)

конечно не идеальный вариант из-за эксепшена
но ИМХО рабочий
...
Рейтинг: 0 / 0
23.04.2019, 10:14
    #39805214
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
получается
нужно что бы читатель блокировал и читателей и писателей
и другие читатели и писатели его не ждали
...
Рейтинг: 0 / 0
23.04.2019, 10:27
    #39805221
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
если упростить
listtoviewполучается
нужно что бы читатель блокировал читателей
и другие читатели его не ждали
о как...


READPAST уже сказали, что не подходит
...
Рейтинг: 0 / 0
23.04.2019, 10:27
    #39805222
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
listtoviewполучается
нужно что бы читатель блокировал и читателей и писателей
и другие читатели и писатели его не ждали
Код: sql
1.
select ... from MyTable with (updlock, readpast)
...
Рейтинг: 0 / 0
23.04.2019, 10:36
    #39805230
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
invmlisttoviewполучается
нужно что бы читатель блокировал и читателей и писателей
и другие читатели и писатели его не ждали
Код: sql
1.
select ... from MyTable with (updlock, readpast)


и update в этом же запросе нужно
что бы повторные запросы не пытались его снова прочитать
...
Рейтинг: 0 / 0
23.04.2019, 10:37
    #39805231
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
т.е. пометимть строку что она уже обработана и больше никогда к ней не возвращаться
...
Рейтинг: 0 / 0
23.04.2019, 10:42
    #39805233
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропустить уже считанную строку
listtoviewи update в этом же запросе нужно
что бы повторные запросы не пытались его снова прочитать
Код: sql
1.
update MyTable with (readpast) set ... output ...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пропустить уже считанную строку / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]