Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.02.2003, 14:29
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
Спасибо за Ваше внимание! Вопрос: У нас клиент написан на Access97 (был на файлах, потом UpSize на SQL2000). При работе с таблицами и вызовах процедур Access не забирает полностью результат запроса и транзакции могут длиться минутами (duration in SQL Profiler), если пользователь открыл форму и пошел покурить. В результате висят блокировки ([sp_lock, sysprocesses] shared, waittype = 0x0800 (NETWORKIO), что все равно плохо ибо мешают другим обновлять данные). Подскажите, как заставить Access забирать результат запроса сразу и не держать блокировки. Не ждать? Где можно применяем запросы без блокировок (NOLOCK) но много так не наработаешь, да и не дело держать блокировки. Я сам недавно после Delphi на Access попал, не могу разобраться. Помогите. И ещё, при 30 пользователях Access умудряется делать по 7 новых connection в секунду!!! на сервер и столько же закрывать ежесекундно при нормальной работе в течении всего дня (пользователи из программы не выходят и не входят). Как бы и это устранить (шибко мне тяжело на это после Delphi смотреть :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2003, 14:46
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
Принципиально, по опыту, мне это не удалось победить.... Ладно бы в форме - если например открываешь Combo и потом эту форму не закрываешь, а например прячешь, то он считает делом чести дофетчить все записи - а это может длиться и не только минуты.... Выхожу как - стараюсь не выводить все данные, а заставляю пользователя входить через фильтры..... С коннектами - дело тоже похоже неличимое.... Если из VB еще как-то можно бороться, то стандартные линкованные таблицы и запросы на них - по-моему безнадежно.... Пробовал когда-то играться кол-вом записей за фетч и интервалами между фетчами - но смог сделать только хуже - блокировок, конечно, меньше, но клиент тормозит в этом случае ужасно.... Если кто смог решить - будет интересно узнать как.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 10:46
|
|||
|---|---|---|---|
|
|||
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
2 СергейC: Похоже, что у вас также, как и у MixaCh, таблицы просто подлинкованы с SQL Server'а. Переходите на ADP или ADO. На мой взгляд, последний вариант лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 10:54
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
т.е. при ADO они что - не линкуются?!?!? Просто никогда не видел - интересно было бы узнать, как работает... Что - я динамически определяю RecordSet для каждой формы?!?!? А запросы и пр.... И по поводу ADP - какое впечатление?!?!? Мне не понравилось невозможность делать Access запросы - только View.... У меня есть Перекрестные - так что с ходу перейти не смог..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 15:56
|
|||
|---|---|---|---|
|
|||
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
В каком то смысле похожая ситуация Манагерам делаю форму в аксессе с прилинковаными серверными таблицами ВВожу данные. Ок Начинаю потом некоторые поля редактировать.. ругается на блокировку другим юзером.. но я то один все юзаю.. :( При удалении таже байда.. Зато запросом все катит.. потому если все делдать ан запросах.. какой смысл юзать Аксесс тогда с таким же успехом можно оболочку на пример наа Дклфях писать.. Что не хотелось бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 16:05
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
Да, с "изменением записей другим пользователем" - сообщение порядком доставшее.... Где-то читал, может и хелпе - для таблиц (MS SQL), в которых ключ, например Identity и еще в каких-то случаях рекомендуют добавлять в Табл поле типа TimeStamp - типа потом все начинает работать лучше... Кое где удалось победить сообщения... Вроде как действительно работает!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 16:23
|
|||
|---|---|---|---|
|
|||
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
2 MixaCh При использовании ADO нужно в корне пересмотреть стратегию работы с базой. Если требуется улучшить какой-то уже созданный и крупный продукт, созданный на подлинкованных таблицах, то легче будет создать его заново. Это долгий разговор, вообще говоря, но конкретно по твоим вопросам: В целом, мысль верная - работа с базой будет идти только через "рекордсеты", в терминологии ADO именуемые курсорами. Курсоры тоже создают блокировки, но делают это более умно и менее геморройно. Несколько пользователей могут одновременно редактировать одну и ту же таблицу и видеть изменения, сделанные друг другом. Придётся отказаться от форм, у которых явно указана таблица в качестве источника данных. Это не так страшно, как кажется на первый взгляд. Вместо этого придётся выгружать данные с SQL Server в локальные таблицы и все формы и отчёты "натравливать" уже на них. Это если рассматривать проблему в целом. В конкретном случае, когда такой процесс затруднителен или невозможен (исходная таблица очень большая) существуют простое и эффективное решение проблемы - создать на SQL Server временную таблицу и временно подлинковать её к базе, после чего "натравить" на неё форму или отчёт. Неплохим вариантом будет полный отказ от использования форм, являющихся отображением таблицы. Вместо них можно использовать неплохую библиотеку MSCOMCTL.OCX, а точнее - ActiveX-объект ListView оттуда. Заполнять его данными через курсор и использовать для выбора записи, которую потом редактировать отдельно. Из этой же библиотеки можно "для украшательства" использовать и другие объекты - TreeView, ProgressBar, ToolBar. В принципе, если уж работать через ADO, то быстрее будет это делать в полноценной среде программирования - Delphi, VB, VC (я имею в виду скорость работы конечного продукта). Но неоднократно замечено, что огромный плюс Access - это возможность без единой строчки кода создать мощный отчёт по любому количеству таблиц, к тому же используя группировку. Поэтому я им пока и пользуюсь для создания интерфейса к базе данных. Им и ADO. A про ADP ничего не могу сказать. Я прочитал про него все описания, что нашёл, и он мне не понравился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 16:38
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
2 SusliK: В принципе согласен, что наверное страшного особенно ничего нет... TreeView я и атк уже использую (и через DAO) - ничего, оно же независимое от типа библиотеки... Хотя жалко - помню в 2.0 был Outline - туда можно было загонять запрос на каждый уровень дерева - и дальше он крутился сам... Может и не оптимально, но зато просто - как трусы!!!! А в остальном - один вопрос: Временные таблицы (локальные или Серверные) - это что - необходимость в ADO или просто иллюстрация.... По-моему грузить сервак лишними задачами - не очень красиво - выгрузи, загрузи.....че он - лошадь что-ли?!?!? и так ему достается..... Да и еще - линк таблицы, я так понимаю это Jet - он через что работает??!? как то никогда не задумывался.... DAO, ADO - это для VB only?!!? а сам он сам по себе?!?!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2003, 16:59
|
|||
|---|---|---|---|
|
|||
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
СМ топик выше или http://support.microsoft.com/default.aspx?scid=kb;en-us;Q280730&gssnb=1 http://support.microsoft.com/default.aspx?scid=kb;EN-US;278696 Может поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2003, 11:04
|
|||
|---|---|---|---|
|
|||
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
2 MixaCh Временные таблицы - это один из способов обойти блокировки, когда позарез надо построить форму, основанную на таблице SQL Server. Но, повторюсь, лучший вариант - отказаться от таких форм как раз из-за того, что "грузить сервак лишними задачами - не очень красиво". С отчётами, которые в принципе всегда должны быть построены на запросе или таблице, легче гораздо. Там есть более-менее эффективные способы безболезненно обойти глобальные блокировки. А Jet, DAO и ADO - это обычные объектные библиотеки для доступа к данным разными способами. Их можно использовать в любой современной среде программирования и даже в VBScript (хочешь пример?). Разумеется, если они установлены на компьютере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2003, 14:04
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
Если хоть немного разобраться с 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2003, 14:35
|
|||
|---|---|---|---|
SQL2000 +Access97 -> блокировки. Как устранить? |
|||
|
#18+
Спасибо....Хорошо написано, с чувством!!! Только последний вопрос - Сводные таблицы в XP - действительно Access'овские или снова геморой из Excel?!?! Если ассессовсике - то вообще красота была бы!!!! Жалко не хватает времени смотреть все новое..... Эх!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1682360]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 344ms |

| 0 / 0 |
