Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
1.У меня в базе более 30 таблиц. В каждой таблице по 5-7 индексов. Если у пользователя внезапно виснет компьютер или вырубают энергию, файлы CDX могут запортиться. Часто бывает, глядишь, а размер CDX равен 0. Хочу написать переиндексацию. Но очень уж муторно смотреть каждый индекс, тем более там много составных, чтобы написать: Hапример: INDEX ON STR(KOD)+ DTOC(DAT) TAD INDEX OF SPR_STROK Это надо около 200 строк так написать. Но легко можно ошибиться в написании. Ищи потом, Выверяй. Может, есть что попроще. Не найду такую функцию, которая вывела бы мне по указанной таблице все имена тэгов и какие они, по каким полям и т. д. Вдруг такая есть? 2.И еще. Если ключ primary, то в команде INDEX его же не задашь: INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName] [FOR lExpression] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE] Хотел использовать ALTER TABLE SPR_STROK ADD PRIMARY KEY kod_o TAG kod_o1 Но из помощи: "С помощью команды ALTER TABLE можно модифицировать структуру таблицы, не включенной в базу данных. " А у меня же база? Или это не так? Тогда как пересоздавать программно индексы primary? Неужели "Восстановление индексов в случае наличия резервной копии - элементарная операция. Просто заменяешь поврежденный файл CDX на файл из резервной копии, а после открытия таблицы даешь REINDEX для приведения его содержимого в соответствии с новыми значениями таблицы." Единственный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 06:50 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
1. См. TAGCOUNT(), SYS(14) 2. Через ALTER TABLE как раз и можно вносить модификации в таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 08:04 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
я лично решил проблему таким образом CLEAR CLOSE DATABASES ALL CLOSE ALL DIMENSION lai(1) lcCale=pcCaleMain lcCale1='c:\tudor\vfp8\decl\data\' SET SAFETY OFF CREATE TABLE (lcCale1+'allindex') (tabel c(128),indxtag c(128),indxtype c(128),indxkey c(254),indxfor c(128),; indxord c(254),indxcoll c(128)) SET SAFETY ON lnF=ADIR(laf,lcCale+'*.dbf') *? lnF FOR lni=1 TO lnF USE (lcCale+laf(lni,1)) IN 0 ALIAS tabel SELECT tabel lnin= ATAGINFO(lai) LCaL=JUSTSTEM(laf(lni,1)) FOR LNJ=1 TO lnin SELECT allindex APPEND BLANK REPLACE tabel WITH LCaL REPLACE indxtag WITH lai(LNJ,1) REPLACE indxtype WITH lai(LNJ,2) REPLACE indxkey WITH lai(LNJ,3) REPLACE indxfor WITH lai(LNJ,4) REPLACE indxord WITH lai(LNJ,5) REPLACE indxcoll WITH lai(LNJ,6) ENDFOR * ? laf(lni,1),lnin USE IN tabel ENDFOR SELECT allindex SET SAFETY OFF COPY TO (pcCalep+'allindexb') WITH CDX USE IN allindex DELETE FILE (lcCale1+'allindex.dbf') SET SAFETY ON а после делаешь маленькую прогу по востановлению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 08:58 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
Берешь прогу GENDBC.prg пишешь в командной строке Код: plaintext 1. ------------------------------------------------------------------------------------ Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 09:41 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
А чем тебе собственно восстановление из резервной копии не нравиться? Непривычно? Ну, так "флаг тебе в руки" и пиши кучу программного кода. Причем, в результате это все сведется к той же резервной копии, только другими средствами. Либо немерянный PRG, либо дополнительные DBF плюс немерянный PRG. Ты не забывай, что с наличием контейнера базы данных (DBC) индекс прописывается не только в файле CDX, но и в собственно контейнере. Следовательно, прежде чем вообще взяться за воcстановление индекса придется удалить все ссылки на этот индекс из контейнера базы данных (DBC), потом их все обратно восстановить! В общем случае - это очень не тривиальная задача. Заметь, что в резервной копии не обязательно лежат заполненные индексы. В данном случае достаточно индексов к пустым таблицам. Т.е. от самих индексов нужна только "шапка". Их структура. Места это занимает немного. И еще. Резервная копия базы данных у тебя должна быть в любом случае . Особенно, если так часто падает питание. Ну, и какие проблемы воспользоваться этой копией, когда она действительно понадобилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 09:50 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
Из собственного опыта...писал самый первый проект с *.dbc и тоже заморочился на программном востановлении индексов (даже прогу написал рабочую, по восстановлению *.cdx, Relations и триггеров и удалении ссылок из *.dbc). To Владимир Влидимир Ну, так "флаг тебе в руки" и пиши кучу программного кода. Просто ему, как и мне надо переболеть. Каждый имеет право на ошибку. Вот когда надоест для каждой *.dbc писать прогу по восстановлению...вот тогда и придет к выводу Владимир восстановление из резервной копии Тёска, слушай что старшие говорят! Лучше напиши прогу по копированию в *.zip своей базы ------------------------------------------------------------------------------------ Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 10:21 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
зачем же для каждой базы писать моно универсальную прогу написать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 10:59 |
|
||
|
Опять о переиндексации. (Ранние топы на эту тему просмотрены)
|
|||
|---|---|---|---|
|
#18+
Hi leaf! > зачем же для каждой базы писать > моно универсальную прогу написать Напиши, потом мы с удовольствием укажем тебе на твои ошибки, ты их исправишь - процесс повториться ...надцать раз - в конце концов ты напишешь таки хорошую программу уровня той-же StoneField DataBase Toolkit - только у меня возникает серьёзнейшее опасение, что ты не отдашь её нам задарма, а будешь продавать... Но тогда зачем было её писать - уже всё написано! Мы же предлагаем вполне простой, рабочий и главное совершенно бесплатный вариант :) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2005, 23:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32967409&tid=1594602]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
5ms |
track hit: |
75ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 434ms |

| 0 / 0 |
