powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с блокировкой??
16 сообщений из 16, страница 1 из 1
Проблема с блокировкой??
    #32052621
Sharapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, помогите разобраться с проблемой блокировки.
Делаю
SELECT * FROM Table1 WITH(UpdLock,RowLock) WHERE ID = Value1
Все как-будто замечательно, выбранные записи можно просматривать, но нельзя редактировать, а не попавшие в выборку через QA прекрасно редактирую. Но вот при открытом первом рекодсете, открываю второй точно такой же но с Value2. Выскакивает ошибка ожидания. Что не так???
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052655
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как только начал редактировать запись с ID = Value1, тут же заблокировались и те записи, что рядом, как минимум на той же странице, так как при изменении происходят переупорядочивание данных и индексов и это не может не затронуть соседние записи. Точнее может, но при соблюдении кучи условий, реально которые практически невозможно соблюсти.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052665
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, все проще. Второй селект берет запись, накладывает на нее апдейт-лок, смотрит - там Value2 или нет, если нет, отпускает и идет дальше. Доходит до записи, к-ю держит первый селект. Value2 там или нет? А хрен его знает, т.к. наложить второй апдейт-лок он не может. Ну тогда он встает и ждет, бедолага, пока первый ее не отдаст.
Варианты решений. 1) Не использовать во втором селекте updlock, чтобы он накладывал shared, совместимую с Upd, наложенной первым. 2) Создать индекс по ID, чтобы первый селект лочил не RIDы, а индексные ключи. 3) Подождать Юкона, где по слухам из буржуазной прессы должна появиться версионность записей. Но так ли это на самом деле, естественно, неизвестно.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052667
Sharapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве нихт RowLock не говорит, что надо блокировать только редактируемые строки? Тем более в моем конкретном случае, я вообще выбираю записи в рекордсет и сразу же делаю его отключенным (в VB через ADO). Непосредственно в базе записи меняются только при нажатии кнопки сохранить. Поэтому вообще ничего не понимаю :(( ???
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052682
sergwsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, что вмешиваюсь.
Если Вы используете отсоединённый набор данных, у которого по определению LockType = adLockBatchOptimistic, зачем Вам ещё возможности по управлению блокировкой на сервере?
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052685
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sharapp
Зачем накладывать блокировку для отсоединенного набора данных? Кстати, а транзакцию предварительно не открываете?
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052743
Sharapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транзакцию конечно открываю, а блокировка для того чтобы другой бользователь не мог в это время открыть на редактирования туже запись. И во втором запросе не могу убрать UpdLock так, у всех пользователей одна программа.
Попробую сейчас определить индексы и посмотрю что получится
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052750
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если доверить программистам строить дома, то первый залетевшый дятел разрушил бы всю цивилизацию.

(с) не помню откуда
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052755
Sharapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И установка ключа тоже не помогла: часть запесей могу выбрать, а часть нет, причем по какому принципу не понятно
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052763
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sharapp, ты пытаешься воплотить в жизнь порочную практику. Поверь, наживешь себе гораздо больше проблеми, нежели их решишь. А если пользователь, открывший на редактирование запись, пошел попить чайку, а потом и вообще домой уехал? Ты полагаешь, другие юзвери к нему пойдут материться? Они к тебе пойдут!
Я уже не говорю о том, что удержание на больших промежутках времени большого количества блокировок, да еще на уровне строки, способствует растранжириванию ресурсов SQL-сервера на блокировки.
Как ты намерен решить проблему попытки открытия заблокированной записи другим пользователем? Думаешь, он сильно обрадуется, если перед тем, как выдать сообщение о том, что запись заблокирована, ему придется 1 минуту злобно дергать указателем мыши, который превратился в песочные часы? А попробуешь уменьшить таймаут, перестанут корректно работать некоторые процедуры, которых хотя и мало, и используются редко, но для работы которых требуется более 1 минуты...
Нельзя завязывать иеханизм транзакций на сервере на визуальное отображение. Получишь страшный геморрой с взаимными блокировками.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052765
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А конкретно по затронутому вопросу дела обстоят так. Если ты внутри одной и той же транзакции заблокировал запись, то проблем быть не должно. Если в разных транзакциях (разный bath, разные сессии и т.д.), то это все равно, что к данным пытаются обратиться два разных пользователя - разницы никакой. При нескольких открытых Connection-ах одним приложением между скриптами, запускаемых в разных соединениях, могут возникнуть взаимные блокировки.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052772
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение. Ты подумай над одним вопросом - ЗАЧЕМ это тебе нужно. Если только затем, чтобы на экранах у пользователей высвечивалась гарантировано актуальная информация, синхронизированная с данными на сервере, то таким образом ты все равно эту проблему не решишь (точнее, решишь только одну ее часть, а другая все равно останется). Если один пользователь1 модифицировал запись, а пользователь2 открывал ее незадолго перед этим на просмотр, то после модификации пользователем1 содержимое записи на экране пользователя2 останется несоответствующим действительности. Для того, чтобы решить эту задачу методом блокирования записей, необходимо еще и при просмотре записей устанавливать ее тотальную блокировку. Одним словом, работать более одного юзера не смогут. А при таком подходе и проблемы с блокировками не стоит.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32052779
Yarik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Good example of very bad programming style.
Never do it again.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32053262
Sharapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злые вы, уйду я от вас..........:))
Тогда скажите, как лучше организовать работу? С как лучше открывать данные на редактирования и как сохранять?? Научите новенького в этом деле.
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32053275
Bzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО, самое разумное - обсудить с заказчиком действия при ситуации, когда пользователь(пишущий в базу) получит сообщение, что открытая им запись уже не актуальна. Например, при нулевых остатках это может быть и критично. А блокировки - исключительно на момент записи! У Garya сказано очень правильно!
...
Рейтинг: 0 / 0
Проблема с блокировкой??
    #32053276
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может техника семафоров поможет?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с блокировкой??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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