powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Согласование SELECT и UPDATE
8 сообщений из 8, страница 1 из 1
Согласование SELECT и UPDATE
    #40086158
Alex_Va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Есть таблица, к которой обращаются два запроса:
Первый запрос обновляет данные в таблице, используя DELETE, INSERT и UPDATE, оформлен процедурой, которую периодически запускает джоб.
Второй запрос - только SELECT

Нужно ли в коде прописывать какие-либо блокировки (если да, то какие?), чтобы выполнялись два условия:
1. Пока полностью не выполнится обновление, запрос на SELECT ожидает и не выполняется

2. Также и для обновляющего запроса - он не начинает выполняться, пока не завершится SELECT
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086174
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если очень надо:
1. Делаешь две процедуры:
1) "Первый запрос обновляет данные в таблице, используя DELETE, INSERT и UPDATE"
2) "Второй запрос - только SELECT"
2. Изучаешь sp_getapplock
3. Вызываешь sp_getapplock в начале каждой из процедур.
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086275
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
with (nolock) в SELECTe не вариант?
Выборка происходит без блокировки таблицы, в которую происходит DELETE, INSERT и UPDATE твоим джобом
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086291
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Va,

Почти наверняка, RCSI то, что вам нужно
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086293
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНwith (nolock) в SELECTe не вариант?Совсем не вариант. ТС ХОЧЕТ блокировку.

Я думаю, что проще всего обернуть первый запрос в транзакцию и позволить серверу решить вопрос с блокировками.
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086297
Alex_Va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257
НиколайСНwith (nolock) в SELECTe не вариант?
Совсем не вариант. ТС ХОЧЕТ блокировку.

Я думаю, что проще всего обернуть первый запрос в транзакцию и позволить серверу решить вопрос с блокировками.

NOLOCK не подходит

сейчас использую в процедуре обновления

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin tran

alter table dbo.[tTableName]  set (lock_escalation = auto);

DELETE ...
INSERT ... 
UPDATE ...


commit tran



иногда это вызывает взаимоблокировку
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086315
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Va,

Как достичь желаемого, чтобы не мешать другим читателям/писателям написано тут - 22351110

Если такой задачи не стоит, то в процедуре
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin tran

declare @dummy int;
select top (0) @dummy = 0 from dbo.[tTableName] with (tablockx);

DELETE ...
INSERT ... 
UPDATE ...


commit tran


В выборке
Код: sql
1.
select ... from dbo.[tTableName] with (tablock) ...
...
Рейтинг: 0 / 0
Согласование SELECT и UPDATE
    #40086334
Alex_Va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Согласование SELECT и UPDATE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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