powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение свободного пространства в БД
10 сообщений из 10, страница 1 из 1
Получение свободного пространства в БД
    #35863376
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может ли приложение, писаное на Delphi и использующее для доступа ActiveX, достаточно простым и понятным образом получить объем свободного пространства в БД.
Вроде судя по документации все должно быть просто и прозрачно
Пробовал играться с методами GetFreeSpace и GetDatabaseFreeSpace класса SYS.Database,
Пробовал играться классом (название запамятовал, заканчивается на .FreeSpace), но ничего, кроме исключений, пока не получил.

Виктор
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35863762
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var t:variant;
  FreeSpace:integer;
begin
  factory.Connect1('cn_iptcp:localhost[1972]:%SYS');
  t:=factory.Static('SYS.Database');
  t.GetDatabaseFreeSpace('docbook',FreeSpace);
  Edit1.Text:=IntToStr(FreeSpace);
  factory.Disconnect;
end;
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35865974
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примерно так я и пытался делать.
Но на вызове GetDatabaseFreeSpace вылетает с ошибкой.
Правда в голову сейчас одна мысль пришла.
А можно ли на одном потоке иметь более одного экземпляра factory, соединенных с разными БД?
Виктор.
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35866959
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел причину, по которой получал исключение.
Оказывается, созданные мной БД требуют передачи в функцию GetDatabaseFreeSpace не имени БД, а подкаталога, по которому БД расположена.
Пробовал зайти с другой стороны, открыть экземпляр класса через %OpenId, но там тоже потребовалось задавать подкаталог.
Как можно получить этот подкаталог по имени БД?
Виктор
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35867438
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hisbreht VictorКак можно получить этот подкаталог по имени БД?
Cache 5.0.X:
Код: plaintext
1.
2.
s NSP="USER"
d TRANSNSP^%GXLINFO("Info",NSP)
w Info(NSP,"defdir")

Cache 2008:
Код: plaintext
1.
2.
s NSP="USER"
d TRANSNSP^%SYS.GXLINFO("Info",NSP)
w Info(NSP,"defdir")
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35867668
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернее приведенный выше код - получение дефолтной директории по namespace-у.
Для DATABASE, похоже, можно определить так:
Код: plaintext
1.
$p(^["%SYS"]SYS("GREDIR","DSLOC","master",^["%SYS"]SYS("GREDIR","DSACT"),DBName),$c( 1 ))
где DBName - имя базы данных
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #35868615
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, заработало.

Виктор
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Получение свободного пространства в БД
    #37092309
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заметил следующие проблемы.
Из базы удаляются данные а метод GetDatabaseFreeSpace возвращает все одно и то же значени.
С чем это может быть связано? С фрагментацией? Или реально пространство не освобождается? Есть ли способ получить правильное значение свободного пространства?

При попытке вызвать метод GetFreeSpace через Fctive""вообще возникает ошибка "method does not exist", хотя в документации он описн.
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #37092361
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это нормально
Вы удаляете узлы глобалов - блоки разрежаются, но количество блоков остается тем же.
место увеличится после полного удаления глобалов (или уменьшение его во много раз, когда каше начнет соединять блоки),
либо после программы ^GCOMPACT из области %SYS
...
Рейтинг: 0 / 0
Получение свободного пространства в БД
    #37092519
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hisbreht Victor, при полном удалении глобала оба метода выдают новое значение свободного места. Правда, вызывал я их из терминала, но не думаю, что это принципиально. Насчёт "разреженного" удаления полностью согласен с Блоком А.Н.
Кстати, Портал, судя по набору полей в таблице "Свободное место", использует не эти методы, а запрос SYS.Database:FreeSpace.

P.S. Cache for Windows (x86-64) 2010.2.2 (Build 600) Wed Dec 8 2010 16:37:18 EST
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение свободного пространства в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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