14.02.2007, 14:24 | #1 |
Участник
|
Для учетных таблиц, но не для одновременного учета (а для репликации) реализвано следующая схема
каждому складу выделен свой диапазон в 32, 5802 и прочих учт. таблицах. Допустим Склад А 0 - 100000000 Склад B 100000000-200000000 и т.д. Тогда в Sql-базе при одновременном учете по разным складам не будет взаимной блокировки |
|
14.02.2007, 14:57 | #2 |
Участник
|
А с эскалацией блокировок проблем не наблюдалось?
|
|
14.02.2007, 15:06 | #3 |
Участник
|
нет возможности проверить - распределенная база с репликацией пока...
|
|
14.02.2007, 15:56 | #4 |
Участник
|
А вопрос какой?
|
|
16.02.2007, 15:16 | #5 |
Участник
|
вопрос в том что будет ли происходить одновременный учет при такой схеме по разным складам если 5-10 юзеров одновременко кнопку учета нажмут.
|
|
16.02.2007, 15:34 | #6 |
Участник
|
Так учётные таблицы же залочены всё равно. Чтобы получалось одновременно учитывать нужно будет всё это по учётынм кодам перелопатить
|
|
16.02.2007, 16:16 | #7 |
Участник
|
в SQL - базе залочена не вся таблица...
|
|
02.03.2007, 12:10 | #8 |
Участник
|
dmites, а каким образом реализовано разделение по диапазонам?
|
|
02.03.2007, 12:29 | #9 |
Участник
|
Интересно а как по этой схеме межскладские перемещения проводятся?
К какому диапазону отнесется запись в 339 таблице например . Имхо, по этой схеме проще либо раздать диапазоны пользователям, либо создать некий пул диапазонов (Диапазон, Признак Блокировки) - при учете искать первый свободный, взводить признак блокировки, после учета признак блокировки снимать. Все равно остается проблема одновременной модификации данных (поле Остаток в 32, Последняя Прямая Себестоимость в 27... список можно продолжить). Так что подумайте, стоит ли овчинка выделки? |
|
02.03.2007, 22:15 | #10 |
Участник
|
Таблица "серия номеров" блокирована
Лечил так CU 396 NoSeriesManagement GetNextNo(NoSeriesCode : Code[10];SeriesDate : Date;ModifySeries : Boolean) : Code[20] Код: IF ModifySeries THEN IF NOT NoSeries.NoLock THEN //Storkich 17.02.07 пользователи блокируют друг друга NoSeriesLine.LOCKTABLE; Код: //+Storkich //нужно просто обеспечить уникальность номера, не блокируя таблицу //к номеру, в конце прибавляю id сессии пользователя IF NoSeries.NoLock THEN BEGIN IF SessionID='' THEN BEGIN Session.SETRANGE(Session."Моя сессия",TRUE); Session.FIND('-'); IF STRLEN(FORMAT(Session."Соединение ID"))>2 THEN ERROR('Закройте Navision и заново запустите'); SessionID:=CONVERTSTR(FORMAT(Session."Соединение ID",2,2),' ','0'); END; END; //-Storkich EXIT(NoSeriesLine."Last No. Used"+SessionID); |
|
03.03.2007, 12:48 | #11 |
Участник
|
Может реплицировать строки журнала? А ответной репликации отправлять результат.
|
|