Форум: "Базы";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизLocking granularity, используемая Jet Access Найти похожие ветки
← →
AkaSaint (2003-07-18 23:31) [0]Как узнать и изменить сабж? Имеется в виду блокировка по записям или по страницам. Я установил свойство провайдера Jet OLEDB:Database Locking Mode в Alcatraz, т.е. включил блокировку по записям. В MSDN написано, что включение блокировки по записям не исключает блокировку по страницам. Тестируя свой сервер приложений с 2-мя клиентами, параллельно изменяющими случайно выбранные записи в одной таблице, я обнаружил, что один из клиентов (К1) получает сообщение Could not update; currently locked в то время, когда второй клиент (К2) изменяет другую запись, причем запись К1 даже раньше в ходе данного тестирования не была ни разу изменена ни одним из клиентов. Из этого я сделал вывод, что Access использует блокировку по страницам. Я нашел в MSDN т.н. "специфичное для провайдера" свойство Jet OLEDB:Locking granularity, где тоже был выбор из блокировки по записями или по страницам. Я уже было готов был кричать "Эврика!", но не тут-то было. Оказалось, что ни ADOConnection, ни ADOTable такого свойства не имеют! (Дельфи 6, Update Pack 2) :-(
В результате истории сей имеются следующие вопросы:
1) Что значит "provider-specific property"?
2) Почему этого свойства у меня нет?
3) Прав ли я, что у меня включена блокировка по страницам?
4) Как проверить, какой тип блокировки используется на самом деле?
5) Как установить блокировку по записям?
Если у вас хватило терпения дочитать до этого места, я вас поздравляю и уже за это благодарю :-)
Интересны любые мысли, соображения, сведения, ссылки и т.д.
← →
Тих (2003-07-19 00:16) [1]Уф. В целом ответ находится в документации по АДО и св-вам LockType и IsolationLevel. Однакож некий используемый OLEDB провайдер вовсе не обязан реализовывать, _например_, все 4 уровня изоляции SQL-92 ФИЗИЧЕСКИ, он может просто говорить "да, окей, ты присвоил adXactSerializable", хотя черт его знает, что там в движке субд происходит на самом деле, нужно смотреть документацию; то же самое и с блокировкой - MSDN прямо гласит
Providers may not support all lock types. If a provider cannot support the requested LockType setting, it will substitute another type of locking.
Про реализацию Locking в, например, MS SQL Server в его доке написано много, грамотно и подтверждается на опыте (Understanding Locking in SQL Server)
Вот. Это что касается общих св-в и методов ADO. Но. Провайдер может сверх стандарта навесить дополнительных воpможностей, которые устанавливаются через ADODBConnection.Properties. Ну там, ты как разработчик своего провайдера сверх интерфейса, предлагаемого классами АДО, ввёл возможность маршалинга через XML, эту опцию можно будет включить как-нить вроде Connection.Properties["use XML"] := true. Информация о доп. сво-вах Jet (а также о том, как он реализует локинг и пр.) наверное где-нибудь в каком-нибудь MSDN есть.
← →
AkaSaint (2003-07-19 01:23) [2]Спасибо за ответ, Тих. Но хотелось бы что-нибудь более близкое к моим вопросам и Jet OLEDB:Locking granularity. MSDN я уже перерыл настолько, насколько мог, и ответов на свои вопросы не нашел.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c