Добавление самостоятельно индекса в SQL таблицу базы 7.7 #767895


#0 by Joshim
Уважаемое сообщество 1С разработчиков, скажите можно самостоятельно добавлять индекс в SQL таблицу 1C7.7. 1С "переживет" это?
#1 by Ёпрст
переживёт
#2 by lubitelxml
1с всех переживет...
#3 by Mikeware
можно. Только не забывай, что при реструктуризации этой таблицы индекс скорее всего слетит. Поэтому вткни процедуру в ПриНачалеРаботы
#4 by Joshim
при входе 1С7 пишет "Нарушена структура индексов таблицы, для восстановления запустите программу в монопольном режиме". Если запустить монопольно - индекс исчезает
#5 by lubitelxml
читай , кури ПриНачалеРаботыСистемы
#6 by Joshim
в смысле из кода добавлять? кажется понял
#7 by lubitelxml
да, создавай его когда 1с уже прогрузилась
#8 by Joshim
через ODBCRecordSet правильно или придумали что-то быстрее уже?
#9 by trad
а при выходе удалять? иначе при следующем входе получим
#10 by trad
что бы "левый" индекс воспринимался как "родной" его необходимо прописать в dds
#11 by lubitelxml
наверное ты прав, но тогда при реструктуризации придется каждый раз dds руками менять...
#12 by Ёпрст
зачем ? Дописывай ддс всё в той же при начале работы системы
#13 by trad
да, именно так
#14 by trad
не выйдет. dds нужен исправленный еще при старте до НачалаРаботыСистемы
#15 by trad
где то был скриптик для опенконфа который доп.индексы из спец файла ddx запихивал в dds сразу после реструктуризации
#16 by Ёпрст
та не вопрос, проверяешь индекс, если нет, дописываешь в скуле и в ддс, Окошко с перезапуском и статусВозврата в ПриНачале усё. Так, в своё время всем правил cfg
#17 by Ёпрст
дешево и сердито
#18 by ДенисЧ
Дык там вроде какую-то хранимку можно было переписать, чтобы оно на индексы не ругалось, нет?
#19 by trad
нормально вроде только зачем "Окошко с перезапуском и статусВозврата в ПриНачале" ?
#20 by Mikeware
чтоб немонопольно запускать?
#21 by trad
так вроде как немонопольно заходишь, создаешь индекс если его нет и прописываешь в dds
#22 by Mikeware
а ты зайдешь немонопольно? "нарушение структуры" до ПриНачалеРаботы
#23 by Mikeware
а, торможу...
#24 by Mikeware
патч соарона вроде?
#25 by Ёпрст
окошко для юзверов, на 5 секунд, чтоб не пугались :)
#26 by Ёпрст
это тоже есть
#27 by trad
перезапуск то зачем?
#28 by ДенисЧ
Зачем призывать тёмные силы? Если скуль, то там одна хранимка руками правилась... Вот какая - не помню, эклер обострился...
#29 by trad
путаешь, нет там хранимки по теме
#30 by Mikeware
а вот кто мне объяснит, зачем приоткрытии формы журнала и отчета происходит событие ВводНового... О сколько нам открытий чудных...(цы)
#31 by ДенисЧ
Как нет???
#32 by ДенисЧ
А это ??
#33 by trad
- вот так нет - как так вот так нет - никак нет
#34 by ДенисЧ
Не смотря на ограниченность управления индексами в 1С 7,7. решение существует. У этого метода есть все же определенные недостатки связанные с удобствами администрирования.     Необходимо определится с префиксом наименования индекса и в дальнейшем на этом сервере все индексы в рамках баз 1С нужно называть с предопределенным префиксом. Пускай этот префикс будет P1С – это довольно редкий префикс.     В процедуре master.dbo.sp_statistics (процедура, ответственная за проверку наличия индексов таблиц) необходимо изменить небольшую часть кода. Смысл изменений в том что если эту процедуру вызывает приложение 1С то в этом случае в результат выполнения этой процедуры не будут попадать индексы с префиксом P1С.     if app_name='1CV7'  /* это проверка какое приложение вызывает процедуру*/     begin /*этот вариант срабатывает если запущена процедура из 1С */         SELECT             TABLE_QUALIFIER,             TABLE_OWNER,             (INDEX_NAME like @index_name /* If matching name */             or INDEX_NAME is null)        /* If SQL_TABLE_STAT row */             and (substring(INDEX_NAME,1,3)<>'P1C' or INDEX_NAME is NULL)             /*вот это проверка на префикс, если он начинается на P1C*/             /*то в результат выполнения процедуры не попадает*/         ORDER BY 4, 7, 6, 8     end     else     begin   /* это старый вариант реализации, стандартный*/         SELECT             TABLE_QUALIFIER,             (INDEX_NAME like @index_name /* If matching name */             or INDEX_NAME is null)        /* If SQL_TABLE_STAT row */     end
#35 by trad
ааа, вот ты про что, я думал ты про 1сные хранимки
#36 by trad
но, имхо, еще более завуалированный чем правка dds
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С