powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL2000 +Access97 -> блокировки. Как устранить?
12 сообщений из 12, страница 1 из 1
SQL2000 +Access97 -> блокировки. Как устранить?
    #32101593
СергейC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за Ваше внимание!
Вопрос: У нас клиент написан на Access97 (был на файлах, потом UpSize на SQL2000). При работе с таблицами и вызовах процедур Access не забирает полностью результат запроса и транзакции могут длиться минутами (duration in SQL Profiler), если пользователь открыл форму и пошел покурить. В результате висят блокировки ([sp_lock, sysprocesses] shared, waittype = 0x0800 (NETWORKIO), что все равно плохо ибо мешают другим обновлять данные).
Подскажите, как заставить Access забирать результат запроса сразу и не держать блокировки. Не ждать?
Где можно применяем запросы без блокировок (NOLOCK) но много так не наработаешь, да и не дело держать блокировки. Я сам недавно после Delphi на Access попал, не могу разобраться. Помогите.
И ещё, при 30 пользователях Access умудряется делать по 7 новых connection в секунду!!! на сервер и столько же закрывать ежесекундно при нормальной работе в течении всего дня (пользователи из программы не выходят и не входят). Как бы и это устранить (шибко мне тяжело на это после Delphi смотреть :-)
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32101607
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принципиально, по опыту, мне это не удалось победить....

Ладно бы в форме - если например открываешь Combo и потом эту форму не закрываешь, а например прячешь, то он считает делом чести дофетчить все записи - а это может длиться и не только минуты....

Выхожу как - стараюсь не выводить все данные, а заставляю пользователя входить через фильтры.....

С коннектами - дело тоже похоже неличимое.... Если из VB еще как-то можно бороться, то стандартные линкованные таблицы и запросы на них - по-моему безнадежно....

Пробовал когда-то играться кол-вом записей за фетч и интервалами между фетчами - но смог сделать только хуже - блокировок, конечно, меньше, но клиент тормозит в этом случае ужасно....

Если кто смог решить - будет интересно узнать как....
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102080
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 СергейC:
Похоже, что у вас также, как и у MixaCh, таблицы просто подлинкованы с SQL Server'а. Переходите на ADP или ADO. На мой взгляд, последний вариант лучше.
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102088
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. при ADO они что - не линкуются?!?!?

Просто никогда не видел - интересно было бы узнать, как работает...

Что - я динамически определяю RecordSet для каждой формы?!?!? А запросы и пр....

И по поводу ADP - какое впечатление?!?!? Мне не понравилось невозможность делать Access запросы - только View....
У меня есть Перекрестные - так что с ходу перейти не смог.....
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102427
WildMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В каком то смысле похожая ситуация
Манагерам делаю форму в аксессе с прилинковаными серверными таблицами ВВожу данные. Ок Начинаю потом некоторые поля редактировать.. ругается на блокировку другим юзером.. но я то один все юзаю.. :( При удалении таже байда.. Зато запросом все катит..
потому если все делдать ан запросах.. какой смысл юзать Аксесс тогда с таким же успехом можно оболочку на пример наа Дклфях писать.. Что не хотелось бы...
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102441
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, с "изменением записей другим пользователем" - сообщение порядком доставшее....

Где-то читал, может и хелпе - для таблиц (MS SQL), в которых ключ, например Identity и еще в каких-то случаях рекомендуют добавлять в Табл поле типа TimeStamp - типа потом все начинает работать лучше...

Кое где удалось победить сообщения...
Вроде как действительно работает!!!!
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102467
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 MixaCh

При использовании ADO нужно в корне пересмотреть стратегию работы с базой. Если требуется улучшить какой-то уже созданный и крупный продукт, созданный на подлинкованных таблицах, то легче будет создать его заново.
Это долгий разговор, вообще говоря, но конкретно по твоим вопросам:

В целом, мысль верная - работа с базой будет идти только через "рекордсеты", в терминологии ADO именуемые курсорами. Курсоры тоже создают блокировки, но делают это более умно и менее геморройно. Несколько пользователей могут одновременно редактировать одну и ту же таблицу и видеть изменения, сделанные друг другом.
Придётся отказаться от форм, у которых явно указана таблица в качестве источника данных. Это не так страшно, как кажется на первый взгляд. Вместо этого придётся выгружать данные с SQL Server в локальные таблицы и все формы и отчёты "натравливать" уже на них. Это если рассматривать проблему в целом. В конкретном случае, когда такой процесс затруднителен или невозможен (исходная таблица очень большая) существуют простое и эффективное решение проблемы - создать на SQL Server временную таблицу и временно подлинковать её к базе, после чего "натравить" на неё форму или отчёт.
Неплохим вариантом будет полный отказ от использования форм, являющихся отображением таблицы. Вместо них можно использовать неплохую библиотеку MSCOMCTL.OCX, а точнее - ActiveX-объект ListView оттуда. Заполнять его данными через курсор и использовать для выбора записи, которую потом редактировать отдельно. Из этой же библиотеки можно "для украшательства" использовать и другие объекты - TreeView, ProgressBar, ToolBar.
В принципе, если уж работать через ADO, то быстрее будет это делать в полноценной среде программирования - Delphi, VB, VC (я имею в виду скорость работы конечного продукта). Но неоднократно замечено, что огромный плюс Access - это возможность без единой строчки кода создать мощный отчёт по любому количеству таблиц, к тому же используя группировку. Поэтому я им пока и пользуюсь для создания интерфейса к базе данных. Им и ADO.

A про ADP ничего не могу сказать. Я прочитал про него все описания, что нашёл, и он мне не понравился.
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102495
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SusliK:

В принципе согласен, что наверное страшного особенно ничего нет...
TreeView я и атк уже использую (и через DAO) - ничего, оно же независимое от типа библиотеки...
Хотя жалко - помню в 2.0 был Outline - туда можно было загонять запрос на каждый уровень дерева - и дальше он крутился сам...
Может и не оптимально, но зато просто - как трусы!!!!

А в остальном - один вопрос:
Временные таблицы (локальные или Серверные) - это что - необходимость в ADO или просто иллюстрация....

По-моему грузить сервак лишними задачами - не очень красиво - выгрузи, загрузи.....че он - лошадь что-ли?!?!? и так ему достается.....

Да и еще - линк таблицы, я так понимаю это Jet - он через что работает??!? как то никогда не задумывался.... DAO, ADO - это для VB only?!!? а сам он сам по себе?!?!?
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102528
WildMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СМ топик выше или
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q280730&gssnb=1
http://support.microsoft.com/default.aspx?scid=kb;EN-US;278696
Может поможет
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32102848
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 MixaCh

Временные таблицы - это один из способов обойти блокировки, когда позарез надо построить форму, основанную на таблице SQL Server. Но, повторюсь, лучший вариант - отказаться от таких форм как раз из-за того, что "грузить сервак лишними задачами - не очень красиво". С отчётами, которые в принципе всегда должны быть построены на запросе или таблице, легче гораздо. Там есть более-менее эффективные способы безболезненно обойти глобальные блокировки.

А Jet, DAO и ADO - это обычные объектные библиотеки для доступа к данным разными способами. Их можно использовать в любой современной среде программирования и даже в VBScript (хочешь пример?). Разумеется, если они установлены на компьютере.
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32103053
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хоть немного разобраться с ADP, станет понятно, что использование прилинкованных таблиц и запросов к серверу - это просто позапрошлый век в программировании на Access под SQL Server.

В отличие от MDB, формы ADP базируются на ADO.Recordset и DAO вообще отсутствует в ADP как базовый механизм работы с данными.

В ADP отсуствуют некоторые технолгии, которые применяются в MDB (построители выражений, возможность указывать в запросе ссылки на поля форм), чем он несколько невыгодно отличается от MDB на первый взгляд. Но только на первый. Вместо этих технологий добавлены понятия "Входных параметров формы", что позволяет делать формы на основе параметризованных запросов, которые к тому же более эффективно исполняются сервером, так как план их исполнения создается сервером только один раз за сеанс работы с формой, можно использовать хранимые процедуры и фкнкции SQL Server в качестве источников данных форм и полей со списком, можно использовать расширенные свойства базы данных на сервере для выдачи внятных сообщений об ошибках при проверке серверных ограничений, а также для наследования свойств полей таблиц формами и отчетами.
ADP позволяет редактировать любые объекты SQL Server (таблицы, представления, триггеры, процедуры, ограничения ,индексы, фукнции и т.п.)средствами, внешне чильно напоминающими EM, создавать в построителях запросы непосредственно на T-SQL и исполнять их через ADO.
Формы ADP имеют встроенный механизм управления загрузкой данных с сервера, позволяют пользователю останавливать загрузку данных и указывать максимальное число записей, которые могут загрузиться с сервера.
Что касается перекрестных запросов - то в Access XP на смену им пришли сводные таблицы и режимы сводных таблиц для объектов Access. Теперь любую линейную таблицу или форму можно представлять в виде сводной таблицы, причем как в MDB, так и в ADP. Функциональность сводной таблицы (которая может быть еще и сводной диаграммой) намного шире, чем у перекрестного запроса, поскольку сводная таблица допускае использования множества полей для группировки в колонках, а также самые разные способы фильтрации и группировки.
В общем, если уж пользоваться Access в качестве клиента, то можно сказать что функционалбность MDB по сравнению с ADP - примерно 20%.

P.S. Нормально технология ADP реализована только в Access XP, который является существенным шагом вперед по сравнению с A-2000.
...
Рейтинг: 0 / 0
SQL2000 +Access97 -> блокировки. Как устранить?
    #32103082
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо....Хорошо написано, с чувством!!!

Только последний вопрос - Сводные таблицы в XP - действительно Access'овские или снова геморой из Excel?!?!

Если ассессовсике - то вообще красота была бы!!!!

Жалко не хватает времени смотреть все новое..... Эх!!!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL2000 +Access97 -> блокировки. Как устранить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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