Огромные LCK-файлы (Lock File Has Grown Too Large)
Материал из DRKB
Огромные LCK-файлы (Lock File Has Grown Too Large)[править | править код]
Если .EXE-файл расположен в том же каталоге, что и таблица Paradox, и флажок Local Share установлен в TRUE, .LCK-файл с каждым запросом растет как на дрожжах. Другая условие - вы имеете соединение посредством DbiOpenTable или TTable.Open.
РЕШЕНИЕ:
- Установите частный (private) каталог в какое-нибудь другое место
- Переместите .EXE-файл в каталог, отличный от каталога с файлами таблиц
- Установите Local Share в FALSE
Сборник Kuliba
Author: Scott Frolich
Source: Взято из Советов по Delphi от Валентина Озерова
ID: 02580
Эта проблема специфична для таблиц формата Paradox, относится как 16 битным, так и 32 битным версиям BDE, и может встречается при выполнении одного из следующих условий:
- Исполняемый файл приложения находится в той же папке, что и таблица.
- Некорректно установлен (не установлен) параметр Private Directory.
- Открытая в TTable таблица Paradox участвует в запросах TQuery.
- Параметр LOCAL SHARE установлен в True (BDE Administrator, закладка "System")
Для решения проблемы необходимо выполнить следующие шаги:
- 1. В папке с исполняемым файлом приложения создайте три новых папки: TABLES, PRIV и NET (длина пути NetDir не должна превышать 31 символа). Поместите все таблицы приложения в папку Tables
- 2. Во время исполнения Ваше приложение должно устанавливать значения:
Session.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV'; Session.NetFileDir := ExtractFilePath(ParamStr(0)) + 'NET';
- 3. Убедитесь, что значение LOCAL SHARE установлено в False (BDE Administrator, закладка "System")
Эти рекомендации позволяют избежать ошибки "Lock File Too Large".
Примечание: данные рекомендации справедливы для локальных баз, в случае сетевых баз и/или размещения программы на сетевом устройстве или при доступе из нескольких программ, можно поступись следующим образом:
- Не размещайте базу и программу в одной папке, тем более, что программу желательно поместить в защищенную от записи папку.
- Приватный каталог надо разместить в персональной папке, желательно для каждой запущенной копии приложения отдельный, подходящее место персональная папка TEMP\SessionID\
- Сетевой каталог NETDIR - выделить отдельную папку на сети исключительно только для этой цели и единую для всех приложений BDE
- LOCAL SHARE - TRUE, можно попробовать и FALSE, если это не будет приводить к порче индексов.
Source: Взято с http://delphiworld.narod.ru
ID: 02581