Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Блокировка таблиц драйвером FoxPro (число прочтений - 14014 )
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #30 - 13. Марта 2008 :: 04:37
Печать  
kiruha писал(а) 13. Марта 2008 :: 04:35:
Где ты увидел хоть одну нестандартную команду в процедуре инициализации? Ужас
Там проводится серия совершенно стандартных запросов.

Чукча писатель? Я совершенно ясно сказал, что я считаю некорректным.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #31 - 13. Марта 2008 :: 04:38
Печать  
Цитата:
P.S> Естественно я включу функционал в свою базу.

Удачи!
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #32 - 13. Марта 2008 :: 05:17
Печать  
Uzhast писал(а) 13. Марта 2008 :: 04:37:
kiruha писал(а) 13. Марта 2008 :: 04:35:
Где ты увидел хоть одну нестандартную команду в процедуре инициализации? Ужас
Там проводится серия совершенно стандартных запросов.

Чукча писатель? Я совершенно ясно сказал, что я считаю некорректным.


глобальную переменную глОЛЕДБ использую год. Проблем не наблюдалось.
И вероятно не я один.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #33 - 13. Марта 2008 :: 05:52
Печать  
kiruha писал(а) 13. Марта 2008 :: 05:17:
глобальную переменную глОЛЕДБ использую год. Проблем не наблюдалось.
И вероятно не я один.

Я надеюсь, ты понимаешь, что годы положительного опыта - ничто по сравнению даже с одним отрицательный случаем. Но, естественно, тебе никто не может запретить заткнуть уши и со словами "ня-ня-ня, я тебя не слышу" игнорировать отрицательный опыт. Особенно в случае, когда он исходит от такой нехорошей падлы, как я  Смех
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #34 - 13. Марта 2008 :: 07:46
Печать  
Uzhast писал(а) 13. Марта 2008 :: 05:52:
kiruha писал(а) 13. Марта 2008 :: 05:17:
глобальную переменную глОЛЕДБ использую год. Проблем не наблюдалось.
И вероятно не я один.

Я надеюсь, ты понимаешь, что годы положительного опыта - ничто по сравнению даже с одним отрицательный случаем. Но, естественно, тебе никто не может запретить заткнуть уши и со словами "ня-ня-ня, я тебя не слышу" игнорировать отрицательный опыт. Особенно в случае, когда он исходит от такой нехорошей падлы, как я  Смех


1.Наверно не менее 100 000 пользователей в мире каждый день работают с FoxPro и не подозревают -
что оказывается для того чтобы данные были не кривые - им нужно все время прерывать соединение с базой,
а чтобы работал многопользовательский режим - нужно пропатчить драйвер.

2. Где то на форуме (itland?) встречалось упоминание о проблеме с "грязными" данными. Не смог сейчас найти.
Там была рекомендация закрывать команду.
У меня везде после запроса Цитата:
ОлеДБКоманда.Закрыть();
Проблем нет.

3.Uzhast, я хоть где то написал, что ты - нехороший человек? Улыбка
И за любое замечание я только благодарен Улыбка.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #35 - 13. Марта 2008 :: 12:13
Печать  
На всякий случай, если беспокоишься за "грязное" чтение - можно явно выполнить при инициализации
Код
Выбрать все
локОлеДБКоманда.Выполнить("EXECSCRIPT('SET SQLBUFFERING  OFF')"); 


Цитата:
ON
Определяет, что оператор SQL - SELECT, при выполнении запроса, использует локальный буфер данных, если таковой используется; если источник данных не использует буфферизацию, то данные выбираются с диска.

OFF
(по-умолчанию) Определяет, что оператор SQL - SELECT выбирает данные с диска, где расположен источник данных.

Но вообще она должна действовать по умолчанию.
  
Наверх
 
IP записан
 
nicolas
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Зарегистрирован: 24. Мая 2006
Re: Блокировка таблиц драйвером FoxPro
Ответ #36 - 13. Марта 2008 :: 12:19
Печать  
kiruha писал(а) 13. Марта 2008 :: 03:42:
Для того чтобы сделать возможным      локОлеДБКоманда.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')");


А вот с этой штукой я бы аккуратнее бы обращался...
Попытаетесь вы, что то писать, запись заблокирована, что будет, будем стучаться в эту запись 60 сек. А дальше пользователь, который захватил эту запись, ее освобождает, и Вы туда преспокойно пишите свои данные. А Если он там свои записал? Что будет? В свое время на FOX-е попал на эту бяку. В системе не удалял физически удаленные записи, использовал их повторно. Вот и получилось: Первый пользователь захватил, записал, снял блокировку. А второй в момент захвата записи первым, тоже пришел к этой записи,  и ждал когда ее освободят. Результат был плачевный...
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #37 - 13. Марта 2008 :: 12:21
Печать  
Объясни мне, пожалуйста, результаты вот этого теста - см. приложенный файл - обработка "Тест", встроенная в конфигурацию.
  

TotalEmpty.rar ( 7 KB | Загрузки )
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #38 - 13. Марта 2008 :: 12:31
Печать  
nicolas писал(а) 13. Марта 2008 :: 12:19:
kiruha писал(а) 13. Марта 2008 :: 03:42:
Для того чтобы сделать возможным      локОлеДБКоманда.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')");


А вот с этой штукой я бы аккуратнее бы обращался...
Попытаетесь вы, что то писать, запись заблокирована, что будет, будем стучаться в эту запись 60 сек. А дальше пользователь, который захватил эту запись, ее освобождает, и Вы туда преспокойно пишите свои данные. А Если он там свои записал? Что будет? В свое время на FOX-е попал на эту бяку. В системе не удалял физически удаленные записи, использовал их повторно. Вот и получилось: Первый пользователь захватил, записал, снял блокировку. А второй в момент захвата записи первым, тоже пришел к этой записи,  и ждал когда ее освободят. Результат был плачевный...


Потому что, что-то с блокировками было  не то, но вообщем эта тема не имеет значения -
в процедуре не используется никакой записи, лично я вообще не использую записи через FoxPro в реальном
времени, и в конце процедуры стоит сброс этого параметра на 20 сек - можете выставить 0,
от этого ничего не изменится.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #39 - 13. Марта 2008 :: 13:48
Печать  
Uzhast писал(а) 13. Марта 2008 :: 12:21:
Объясни мне, пожалуйста, результаты вот этого теста - см. приложенный файл - обработка "Тест", встроенная в конфигурацию.


Поменяй пожалуйста
Код
Выбрать все
Запрос.Выполнить("EXECSCRIPT('SET SQLBUFFERING  OFF')"); 


на
Код
Выбрать все
Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); 

  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #40 - 13. Марта 2008 :: 14:48
Печать  
kiruha писал(а) 13. Марта 2008 :: 13:48:
Поменяй пожалуйста

Неее, ты мне тест прокомментируй. Ты ж всех тут уверял, что все абсолютно безопасно, про сто тыщ леммингов рассказывал, которые постоянно получают "некривые" данные. SET SQLBUFFERING приплел еще... И вообще жду благодарности за избавление твоей задницы от последствий от вставляния этого твоего кода в твою конфу   Смех
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #41 - 13. Марта 2008 :: 22:11
Печать  
Uzhast писал(а) 13. Марта 2008 :: 14:48:
kiruha писал(а) 13. Марта 2008 :: 13:48:
Поменяй пожалуйста

Неее, ты мне тест прокомментируй. Ты ж всех тут уверял, что все абсолютно безопасно, про сто тыщ леммингов рассказывал, которые постоянно получают "некривые" данные. SET SQLBUFFERING приплел еще... И вообще жду благодарности за избавление твоей задницы от последствий от вставляния этого твоего кода в твою конфу   Смех


А что тут комментировать?
Буфер в 0 выполняет не команда SET SQLBUFFERING а Цитата:
SET REFRESH TO 0,-1

В твоем специальном тесте если между одинаковыми запросами меньше 3 сек и в этот промежуток времени успели поменять запись то запрос возвращает те же данные. Надо сказать ситуация крайне маловероятная и для отчетов несущественная.
Даже эту малую вероятность легко исключить командой
Код
Выбрать все
Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); 

Выполняя эту команду 100 тыщ лемингов получают вполне корректные данные.
Я не утверждаю, что никогда не ошибаюсь.
Но благодоря таким программерам как Uzhast и Nick можно получить вполне качественный код Улыбка
За что и персональное спасибо от меня Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать