RUS  ENG 

сжать базу данных - ShrinkByKeySet?

Страницы: 1
RSS
сжать базу данных - ShrinkByKeySet?
 
Здравствуйте!

Я столкнулся с необходимостью сжатия базы данных. Необходимо удалить из таблицы те записи, у которых нет метрики (оно же "Браузер БД" - "Сжать"). Судя по всему для этого надо воспользоваться ShrinkByKeySet методом. Только не могу понять, какие параметры передавать ему в этой ситуации? В качестве набора ключей должны выступать все ключи слоя??

Заранее спасибо.
 
Может так лучше?

ZbUtilities.TablePack(TableName As String);
Выполняет «сжатие» (pack) таблицы Paradox.
 
Честно говоря, не уверен.
Ведь TablePack (из описания) принимает в качестве параметра полный путь к файлу таблицы.
Но я не могу знать, что это таблица системы Paradox, где этот файл и, вообще, файл ли это. Собственно, БД слоя может использовать таблицу с SQL-сервера. А само сжатие должно быть основано на отсутствии метрики в слое (удалили объект - семантика осталась - подлежит удалению). Как-то так.
 
Тогда если хочешь получи все ключи слоя затем получи все Sys в базе удали лишнее преобразуй в массив и передавай Shrink'y
ток так тебе все равно придется определять что за база. Чтобы выполнить запрос. Потому как Source требуется для не PAradox
А узнать парадокс или нет просто получи имя таблицы db в конце значит парадокс. )
P.S. Я бы не сильно верил документации лучше обращайся к ним напрямую (через почту аську скайп или по телефону). Быстрее ответят.
 
Цитата:
Честно говоря, не уверен.
Ведь TablePack (из описания) принимает в качестве параметра полный путь к файлу таблицы.
Но я не могу знать, что это таблица системы Paradox, где этот файл и, вообще, файл ли это. Собственно, БД слоя может использовать таблицу с SQL-сервера. А само сжатие должно быть основано на отсутствии метрики в слое (удалили объект - семантика осталась - подлежит удалению). Как-то так.

1. TablePack - сжимает таблицу Paradox (и только такую), а именно убирает из файла удаленные записи и делает файл более компактным. К сжатию базы не относится.
2. Для сжатия базы действительно подойдет ShrinkByKeySet, в качестве набора ключей (KeySet) можно использовать объект IElementKeys (напр. все ключи слоя Layer.ElementKeys).
 
Дмитрий, спасибо!
А еще вопрос в продолжение: когда в слое несколько типов и каждый имеет свою БД - тогда для каждой БД надо выполнять zdb.Queries.Default.ShrinkByKeySet. Но при этом набор ключей - полный Layer.ElementKeys тоже подойдет?
Страницы: 1