Страница 1 из 1

Индексы в Таблице REF_OKDP

Добавлено: 28 май 2011, 19:30
aybeck_a
Добрый день!!!
Была произведена конвертация БД SQl2000 sp4 на SQl 2008 64 бит, После конвертации выводит ошибку: Индекс не найдет в таблице REF_OKDP. После конвертации запускали CREA_IDX, который выдал в логе
25/05/2011 19:12:27 [CONV]: Обрабатывается таблица REF_OKDP
и больше ни чего. Получается как бы индексы не создались. Таблица имеет 211 записей. В Среда SQL Server Management Studio видно только 1 индекс T$REF_OKDP0, хотя в старой БД их 5. Утилита chkmssql, с вкл проверкой индексов и тригеров ошибок не дает.

Re: Индексы в Таблице REF_OKDP

Добавлено: 01 июн 2011, 14:12
Semi-bit
А пробовали индексы пересоздать вручную? То есть, не с помощью интерфейсов, а DDL-запросами в SQL?
Скорее всего, где-то в скрипте конвертации произошла ошибка. Определения индексов можно взять из старой базы.

Re: Индексы в Таблице REF_OKDP

Добавлено: 02 июн 2011, 12:49
aybeck_a
Побывал прямым запросом в SQL:
CREATE UNIQUE NONCLUSTERED INDEX [T$REF_OKDP0] ON [dbo].[T$REF_OKDP]
(
[F$NREC] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
не помогло.
Таблица всего содержит 5 индексов.

Re: Индексы в Таблице REF_OKDP

Добавлено: 02 июн 2011, 14:23
n0where

Код: Выделить всё

Create table D_KATAL.REF_OKDP "справочник ОКДП"
  Using "ref_OKDP.dat"
  With Table_Code = 1469
  With replace With TableOptions Corpo, Branched
  (
    NREC             : Comp         "Номер записи",
    ATL_LASTDATE     : Date         "Дата последней модификации",
    ATL_LASTTIME     : Time         "Время последней модификации",
    ATL_LASTUSER     : ref(X$USERS) "Код пользователя",
    ATL_ORIGINOFFICE : Word         "Номер офиса, в котором занесена запись",
    ATL_OWNER        : Comp         "Код владельца записи",
    ATL_BRANCH       : Comp         "Филиал",
    NAME             : String[80]   "наименование",
    KOD              : String[20]   "код",
    ISLEAF           : Word         "признак нижнего уровня",
    LKOD             : Word         "длина кода",
    KGARM            : String[20]   "код гармонизированной системы",
    TNV              : String[20]   "код товара ТНВЭД (реж. регул)"
  )

  with index
  (
    REF_OKDP01 = NREC(Unique,Surrogate,Journal),
    REF_OKDP02 = KOD,
    REF_OKDP03 = LKOD+KOD,
    REF_OKDPLM = ATL_LASTDATE+ATL_LASTTIME,
    REF_OKDPLU = ATL_LASTUSER
  );

Re: Индексы в Таблице REF_OKDP

Добавлено: 02 июн 2011, 14:45
Semi-bit
aybek_a писал(а):Пробовал прямым запросом в SQL:
...
не помогло.
Не совсем понял, как именно не помогло :?: Ошибка не исчезла, или же попытка создать индекс выдала ошибку? В первом случае ошибка наверняка возникает из-за того, что Вы создавали не тот индекс, отсутствие которого её вызывает. Во втором случае - не могу подсказать. Пожалуйста, опишите подробнее результаты Ваших действий.

n0where
надо бы ещё референсные индексы добавить :)

Re: Индексы в Таблице REF_OKDP

Добавлено: 02 июн 2011, 17:27
aybeck_a
n0where
Не подскажите как с этим кодом работать? запускать в саппорте или SQL? Если не затруднит можно ли по подробнее!!!

Re: Индексы в Таблице REF_OKDP

Добавлено: 02 июн 2011, 17:33
aybeck_a
Semi-bit писал(а):
aybek_a писал(а):Пробовал прямым запросом в SQL:
...
не помогло.
Не совсем понял, как именно не помогло :?: Ошибка не исчезла, или же попытка создать индекс выдала ошибку? В первом случае ошибка наверняка возникает из-за того, что Вы создавали не тот индекс, отсутствие которого её вызывает. Во втором случае - не могу подсказать. Пожалуйста, опишите подробнее результаты Ваших действий.

n0where
надо бы ещё референсные индексы добавить :)
В SQL создать индексы получилось, а вот ошибка повторяется. Создаю индексы как в тестовой они идентичны.

Re: Индексы в Таблице REF_OKDP

Добавлено: 03 июн 2011, 01:22
edward_K
просто sql-лем создать мало.
Лучше удалить таблицу и пересоздать средствами атлантиса( сапорт - консоль управления, vip - как в конверторе)

Re: Индексы в Таблице REF_OKDP

Добавлено: 03 июн 2011, 17:34
aybeck_a
n0where писал(а):

Код: Выделить всё

Create table D_KATAL.REF_OKDP "справочник ОКДП"
  Using "ref_OKDP.dat"
  With Table_Code = 1469
  With replace With TableOptions Corpo, Branched
  (
    NREC             : Comp         "Номер записи",
    ATL_LASTDATE     : Date         "Дата последней модификации",
    ATL_LASTTIME     : Time         "Время последней модификации",
    ATL_LASTUSER     : ref(X$USERS) "Код пользователя",
    ATL_ORIGINOFFICE : Word         "Номер офиса, в котором занесена запись",
    ATL_OWNER        : Comp         "Код владельца записи",
    ATL_BRANCH       : Comp         "Филиал",
    NAME             : String[80]   "наименование",
    KOD              : String[20]   "код",
    ISLEAF           : Word         "признак нижнего уровня",
    LKOD             : Word         "длина кода",
    KGARM            : String[20]   "код гармонизированной системы",
    TNV              : String[20]   "код товара ТНВЭД (реж. регул)"
  )

  with index
  (
    REF_OKDP01 = NREC(Unique,Surrogate,Journal),
    REF_OKDP02 = KOD,
    REF_OKDP03 = LKOD+KOD,
    REF_OKDPLM = ATL_LASTDATE+ATL_LASTTIME,
    REF_OKDPLU = ATL_LASTUSER
  );
Ругается:
16:32:01 │ Ошибка: Поле "ATL_LASTDATE" в таблице REF_OKDP уже есть! (стр.8, поз.69 в table.lot)
│ ATL_LASTDATE : Date "Дата последней модификации",
│ ^

Re: Индексы в Таблице REF_OKDP

Добавлено: 03 июн 2011, 21:11
edward_K
1. посмотрите доку
2. если в лом посмотрите конвертор 712-810 - там где лоты по созданию индексов,таблиц и т.п.
3. чтобы выполнить один в один то что вам дали, таблу нужно сначала грохнуть.

Re: Индексы в Таблице REF_OKDP

Добавлено: 08 июн 2011, 16:22
Semi-bit
edward_K писал(а):3. чтобы выполнить один в один то что вам дали, таблу нужно сначала грохнуть.
Перед тем, как грохнуть, не поленитесь выгрузить её хотя бы в дбф :)

Re: Индексы в Таблице REF_OKDP

Добавлено: 13 сен 2011, 15:16
aybeck_a
Запрос выдает ошибку
Ошибка: Индексы с префиксом REF_ системные их можно только удалять.

Re: Индексы в Таблице REF_OKDP

Добавлено: 13 сен 2011, 15:20
oiko
Дык они на мой вкус и не нужны. Ссылочную целостность не поддерживают.
Зачем их придумали спросите у разработчиков.

Re: Индексы в Таблице REF_OKDP

Добавлено: 13 авг 2012, 12:22
aybeck_a
Вопрос решен выходом нового конвертора CONVERTER_810_810_CONV_81005.