Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / создание БД / 9 сообщений из 9, страница 1 из 1
22.03.2010, 21:35
    #36535656
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Не имеется ли где-либо готовый метод создания новой БД из COS, учитывающий все возможные нештатные ситуации? например, наличие файлов на диске (варианты действий - переписать, использовать), наличие зарегистрированной БД при отсутствии файлов (создать на том же месте, создать в другом месте), наличие существующей БД (использовать старую, создать заново) и т.д. в том же духе.

Виктор.
...
Рейтинг: 0 / 0
23.03.2010, 08:36
    #36536010
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Hisbreht Victor , почитай файлик cache_configuration_api_reference.pdf на ftp://npcair.ru
Может и найдёшь что искал...
...
Рейтинг: 0 / 0
24.03.2010, 20:47
    #36540817
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Ясно, придется изобретать велосипед и пытаться учесть все варианты, не забыв что-нибудь ненароком.
...
Рейтинг: 0 / 0
08.11.2010, 11:48
    #36941757
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Итак, имеется ситуация.
В подкаталоге d:\tt находится файл БД cache.dat
Пытаемся создать БД.
w ##class(Config.Configuration).CreateDatabase("TT","d;\tt",10) (или через %New/%Save, ситуация не меняется).
Получаем ошибку, пока не удалим старый файл.
Но при создании БД из портала управления каким-то образом система создает БД, подцепив старый файл.
Как можно этого добиться из COS?
...
Рейтинг: 0 / 0
08.11.2010, 12:08
    #36941824
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Если файл БД уже существует, используйте вместо Config.Configuration.CreateDatabase() метод Config.Configuration.AddDatabase() .
Или в новых версиях Caché Config.Databases.Create() .
...
Рейтинг: 0 / 0
08.11.2010, 18:51
    #36943277
создание БД
Вот друг рядом говорит, что действительно нужен Config.Databases.Create()
...
Рейтинг: 0 / 0
09.11.2010, 19:53
    #36945788
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
C Config.Databases более-менее все понятно.
Но вопросы пока остались.

Есть некоторая база, которую надо кардинально обновить. Лучший метод в этом случае - прибить старую и создать по новой.

Удаляю базу через Config.Databases.Delete (предварительно удалив область через Config.Namespaces.Delete).
Но, если был хотя бы один доступ к базе на запись, то файл cache.dat от этой базы остается заблокированным со стороны Cache, несмотря на то, что база числится успешно удаленной, никаких ошибок не наблюдается, все приложения, имевшие доступ к базе закрыты.

При этом, если удалять базу из портала, файл не блокируется.

Что я упустил?
...
Рейтинг: 0 / 0
09.11.2010, 20:37
    #36945818
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Перед удалением БД Вы должны её предварительно размонтировать: SYS.Database.DismountDatabase() .

PS: удалять область необязательно.
...
Рейтинг: 0 / 0
09.11.2010, 21:55
    #36945914
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание БД
Спасибо.

Хотя было бы логично (с моей субъективной колокольни, естественно) либо автоматом размонтировать, если уж успешно удаляет, либо выдавать ошибку "занято".
А если не удалять область, то ошибкой завершается удаление базы.
Возможно, правда, от того, что не размонтировано было.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / создание БД / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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