|
76 / 54 / 22
Регистрация: 26.02.2017
Сообщений: 206
|
|
MS SQL Блокировка записи в базе данных на время обработки07.09.2020, 04:19. Показов 8585. Ответов 44
Метки нет (Все метки)
Всем доброго времени суток!
Суть проблемы: имеется база данных (MS SQL) и приложение, работающее с этой базой (используется EF). Приложение в несколько потоков берет данные из таблицы, производит некоторые изменения и записывает обратно. Манипуляции с записью занимают некоторое время. Вопрос: как сделать блокировку записи в таблице, чтобы пока эту запись обрабатывает один поток, ее не мог получить другой? Сейчас сделала так - добавила в таблицу столбец с булевым значением. При выборке из БД, программа устанавливает это значение в true, при записи обратно - в false. При выборке, соответственно, стоит условие не выбирать записи с Locked == true. Но, насколько я понимаю это костыль и должна быть предусмотрена блокировка записей... Подскажите, пожалуйста, как это можно реализовать правильно? Правильно ли я понимаю, что для этого нужно использовать транзакции? Заранее благодарю за ответы!
0
|
|
| 07.09.2020, 04:19 | |
|
Ответы с готовыми решениями:
44
Блокировка записи в базе данных Блокировка записи в базе данных на сервере Блокировка записи по времени. Не блокирует через определенное время |
|
76 / 54 / 22
Регистрация: 26.02.2017
Сообщений: 206
|
||
| 09.09.2020, 08:04 [ТС] | ||
![]() Как тогда правильно??? Добавлено через 8 минут Почтальон, возвращаясь к Вашему совету хранить Ид датчиков отдельно... В принципе, я могу при старте цикла делать выборку из базы всех Ид, запихивать их в очередь и брать по одному. Это, в принципе, решает мою проблему.
0
|
||
|
управление сложностью
|
|
| 09.09.2020, 08:05 | |
Сообщение было отмечено Svetlana Saphon как решение
Решение
Создаете две таблицы - Датчики и Параметры Измерений со связью по ключу датчика.
1. Выгружаете в коллекцию данные о датчиках, дальше работаете только с этой коллекцией. 2. Отправляете запрос на датчик (данные о датчике берете из коллекции) 3. Получаете ответ, добавляете обработанные данные в таблицу параметров измерений (ID датчика у вас уже есть, т.к. его вы получили на шаге 2) 2 и 3 пункт можно объединить в один поток.
2
|
|
|
76 / 54 / 22
Регистрация: 26.02.2017
Сообщений: 206
|
|
| 09.09.2020, 08:34 [ТС] | |
|
Почтальон, теперь все понятно!!! Спасибо!!!
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 09.09.2020, 10:59 | ||
|
Ничего удалять не надо. Вам же уже писали, что запись просто помечается как "обработанная" и следующий запрос ее пропустит, т.к. будет выбирать "необработанные". Сама отметка записи (UPDATE) и ее обработка (SELECT, INSERT, UPDATE в других таблицах) - все выполняется в одной транзакции.
0
|
||
|
76 / 54 / 22
Регистрация: 26.02.2017
Сообщений: 206
|
|||||
| 09.09.2020, 11:47 [ТС] | |||||
|
Еще раз всем огромное спасибо за помощь!!!
0
|
|||||
| 09.09.2020, 11:47 | |
|
Записи в базе данных, как встать на последнюю запись в базе после открытия? Как суммировать списки данных для использования в базе обработки Не сохраняются записи в Базе Данных Не удаляет записи в базе данных Не обновляется записи в Базе данных Mysql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|