Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Опять я с этим ADO Найти похожие ветки
← →
ao1973 © (2002-11-24 08:53) [0]Доброе утро!
Интересная проблема с ADO.Отркрываю транзакцию с самым низким IsolationLevel = ilReadUncommitted .Начинаю транзакцию редактирую поле в строчке и даю Пост.Моя транзакция видит изменения, а другие блокированы и даже не могут прочитать таблицу.Закрыть транзакцию раньше времени не могу.Какой выход?
← →
Оливейра © (2002-11-24 12:56) [1]Не может быть. Они должны быть не "блокированы", а, скорее, переведены в режим ожидания, пока lock не снят. Так что лучше твой код посмотреть. Можно LOCK_TIMEOUT уменьшить и втихаря от пользователя ошибку таймаута обрабатывать в цикле.
← →
ao1973 © (2002-11-24 14:49) [2]Очень даже может быть.
connection.BeginTrans;// это соедениение с сервером
ADOTable1.First;//открой любую таблицу
ADOTable1.Next;
ADOTable1.Edit;
ADOTable1NAME.Value:="falcone77";
ADOTable1.Post;
а теперь попытайся прочитать эту же таблицу
хотя бы в Query Analizer
Что касается обработки таймаута
это все равно не сработает,так как данные с сервера он все равно не читает ,мне что их самому придумывать что-ли
← →
Оливейра © (2002-11-24 15:17) [3]В одной сессии ( одном окошке QA )
set transaction isolation level read uncommitted
begin transaction
select * from Categories -- не заканчиваю транзакцию!
В другой
select * from Categories -- все чудесно выбирается
Что значит
> другие блокированы?
Это значит вторая копия или третья копия твоего приложения зависает в ожидании снятия лока?
Или у тебя есть другие AdoTables, которые к одному и тому же AdoConnection`у прицеплены? Во втором случае запросы будут обрабатываться последовательно по очереди.
← →
ao1973 © (2002-11-24 16:17) [4]НЕТ !
Я пользуюсь АДО (Драйвер OLEDB).Костяк приложения у тебя есть
НО РАЗНИЦА В ТОМ ,ЧТО Я не селект делаю а апдейт или инсерт ,всего одной записи .
Вот полсе этого апдейта виснет второй экземпляр програмы или хотя бы QA ,если он обращается к той таблице.
В твоем примере проблем нет и у меня тоже.
Кстати тема блокировок и транзакций MSSQL освещается в интернете да и в документации весьмо скудно есть ли где-нибудь серьезный материал на эту тему.
← →
ao1973 © (2002-11-24 16:28) [5]А вот и пример
QA №1
set transaction isolation level read uncommitted
begin transaction
update products set name="asdasd" where product_id=5845
а в другом окне QA
select * from PRODUCTS /*---- виснет */
← →
Оливейра © (2002-11-24 16:31) [6]А, понятно.
AdoTable1.LockType:=ltBatchOptimistic;
Дока в BooksOnline отличная.
← →
Оливейра © (2002-11-24 16:33) [7]Косяк, не обновляется вообще :)
← →
ao1973 © (2002-11-24 16:39) [8]1. name ключевым полем не является
2. AdoTable1.LockType:=ltBatchOptimistic; стоит по умолчанию
все равно нет эффекта
3. Ну читать то select * from PRODUCTS почему я не могу?
ведь read uncommitted - самый низкий уровень изоляции по идее
не должен мешать читать данные
← →
Оливейра © (2002-11-24 16:48) [9]Виснет потому, что в QA у тебя где-то незавершенная тр-я осталась. В общем так: закрой все, что у тебя юзает MSSQL,
открой два окошка
В первом
use Northwind
set transaction isolation level read uncommitted
begin transaction
update Categories set CategoryName="2" where CategoryName="10000"
--commit transaction
Во втором -
use Northwind
select * from Categories
Ничего не виснет :)
← →
Оливейра © (2002-11-24 16:53) [10]Виснет потому, что в QA у тебя где-то незавершенная тр-я осталась. В общем так: закрой все, что у тебя юзает MSSQL,
открой два окошка
В первом
use Northwind
set transaction isolation level read uncommitted
begin transaction
update Categories set CategoryName="2" where CategoryName="10000"
--commit transaction
Во втором -
use Northwind
select * from Categories
Ничего не виснет :)
← →
ao1973 © (2002-11-24 18:06) [11]Согласен ,не виснет
а вот почему
(0row(s) affected)
а если
use Northwind
set transaction isolation level read uncommitted
begin transaction
update Categories set CategoryName="Napitok" where CategoryID=1
--commit transaction
(1row(s) affected)
то тогда виснет
use Northwind
select * from Categories
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.017 c