powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать, что запись заблокирована?
4 сообщений из 4, страница 1 из 1
Как узнать, что запись заблокирована?
    #32020778
При попытке одновременного обновления записи из двух различных транзакций, вторая, естественно, подвисает до окончания первой. Можно ли как нибудь узнать, что запись уже блокирована другой транзакцией? Или, чтобы IRowsetUpdate::Update() возвратил ошибку?

Проблема возникла вот как: В диалоговом окне необходимо изменять несколько записей зараз. Причем принимать либо отменять все изменения. Для обеспечения работы OK/Cancel, при создании диалога создается транзакия, которая либо принимается, либо откатывается при закрытии. Ясно, что это не лучший способ, т.к. транзакция держится довольно долго. Есть мысль попробовать писать изменения во временную таблицу и потом вносить изменения, только уж больно кривым кажется такой метод.

Может кто подскажет, как правильно решать подобные задачи?
...
Рейтинг: 0 / 0
Как узнать, что запись заблокирована?
    #32020789
"...при создании диалога создается транзакия..."
Так работают только с версионниками. С блокировочником так работать категорически нельзя и надо уходить от этой ситуации любыми путями. Любое решение, какое бы оно ни было, будет все же лучше этой ситуации.

"...изменения во временную таблицу и потом вносить изменения..."
Очень неплохая идея.

Узнать, что запись заблокирована, можно. Но в данном случае, это не решение.

"...IRowsetUpdate::Update() возвратил ошибку..."
SET LOCK_TIMEOUT 0 и ошибка будет гарантирована
...
Рейтинг: 0 / 0
Как узнать, что запись заблокирована?
    #32020824
Не понимаю смысл слов "версионники" и "блокировочники".

Я пытался устанавливать timeout при помощи свойств транзакии ITransactionOptions. На что мне OLE DB Provider for SQL Server ответил, что timeout-ы не поддерживаются.

Т.е., получается, что их поддерживает сервер, но не поддреживает провайдер?
...
Рейтинг: 0 / 0
Как узнать, что запись заблокирована?
    #32020826
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, открывать транзакцию при выводе окна ввода на экран и завершать ее по закрытию его - это смерти подобно. А если ваш пользователь ушел на обед, не нажав OK? Так и будут все остальные висеть?! А может, он помер, успев залочить машину 8-( Временная таблица в таких случаях гораздо более подходящее решение.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать, что запись заблокирована?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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