Добрый день! После обновления BPMOnline до версии 7.4.0.2924 при публикации объекта "Активности" появляется ошибка:
Внимание! Максимальная длина ключа - 900 байт. Индекс "ID0d3c4WXcWBjpNl3fs9eZtd0" имеет максимальную длину 1000 байт. Для некоторых комбинаций больших значений операции вставки или обновления не смогут быть выполнены.
Выполнение данной инструкции было прервано.
Есть ли возможность увеличить max допустимую длину ключа?
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Здравствуйте, Игорь.
Попробуйте удалить данный индекс, он будет пересоздан при публикации объекта.
DROP INDEX ID0d3c4WXcWBjpNl3fs9eZtd0 ON Activity
Если данная рекомендация не решит проблему, просьба более подробно описать изменения сделанные в объекте "Активность", в версии 7.4.0.2924 воспроизвести данную ошибку не удалось.
Ещё при выполнении обновления в лог WorkspaceConsole выпала такая ошибка:
Ошибка Activity: При выполнении действия обновления структуры схемы произошла ошибка "Ошибка операции. Для индекса "IkhyThNAkKdvUI2OBpbFwvp6Q" длина элемента индекса, равная 998 байт, превышает максимальную длину, равную 900 байт. Внимание! Максимальная длина ключа - 900 байт. Индекс "IkhyThNAkKdvUI2OBpbFwvp6Q" имеет максимальную длину 1000 байт. Для некоторых комбинаций больших значений операции вставки или обновления не смогут быть выполнены. Выполнение данной инструкции было прервано.", текст Sql сценария: "CREATE INDEX [IkhyThNAkKdvUI2OBpbFwvp6Q] ON [dbo].[Activity]([Title] ASC)" --- Exception info --- Error: При выполнении действия обновления структуры схемы произошла ошибка "Ошибка операции. Для индекса "IkhyThNAkKdvUI2OBpbFwvp6Q" длина элемента индекса, равная 998 байт, превышает максимальную длину, равную 900 байт. Внимание! Максимальная длина ключа - 900 байт. Индекс "IkhyThNAkKdvUI2OBpbFwvp6Q" имеет максимальную длину 1000 байт. Для некоторых комбинаций больших значений операции вставки или обновления не смогут быть выполнены. Выполнение данной инструкции было прервано.", текст Sql сценария: "CREATE INDEX [IkhyThNAkKdvUI2OBpbFwvp6Q] ON [dbo].[Activity]([Title] ASC)" InnerException: Ошибка операции. Для индекса "IkhyThNAkKdvUI2OBpbFwvp6Q" длина элемента индекса, равная 998 байт, превышает максимальную длину, равную 900 байт. Внимание! Максимальная длина ключа - 900 байт. Индекс "IkhyThNAkKdvUI2OBpbFwvp6Q" имеет максимальную длину 1000 байт. Для некоторых комбинаций больших значений операции вставки или обновления не смогут быть выполнены. Выполнение данной инструкции было прервано. ------
Индекс ссылается на то же поле "Title".
Ещё вопрос: Каким образом отключить индексирование поля Title?
Настройки поля Title не менялись. В объекте "Activity" созданы три поля с префиксом "Usr". Но ошибка указывает именно на индекс поля Title , которого в БД не существует.
Выполнил следующий Sql-скрипт на своей базе и на чистой БД версии 7.4.0.2924
select max_length from sys.columns where object_id = OBJECT_ID(N'Activity') AND name = 'Title'
результат один и тот же
max_length
1000
Может в этом дело?
Пока могу предоставить для анализа md-файл объекта "Activity" из базы, на которую устанавливались обновления и есть эта ошибка. activity.rar
При обновлении чистой BPMOnline 7.4.0.2458_Omnichannel до версии 7.4.0.2924 ошибка не воспроизводится.
В проблемной БД есть активности, где значения поля "Заголовок"(Title) длиной 500 символам. При работе с этими активностями также возникает эта ошибка.
Игорь, проимпортировав Ваш объект на демо стенд 7.4.0.2924-Omnichannel-Softkey-RUS проблему воспроизвести не удалось, объект опубликовался успешно. Просьба уточнить Вы не изменяли тип данных столбцов объекта на тип данных большей длины. Это могло привести к данной ошибке согласно информации http://technet.microsoft.com/ru-ru/library/ms163207(v=sql.105).aspx
Нет. Длина столбца "Title" так и осталась 500 символов. Что самое интересное -это то, что:
1. Указанного индекса нет в БД.
2. Эта ошибка вылезла при обновлении BPMOnline до версии 7.4.0.2924. Вот лог:log_20141203_13094874.txt
Добрый день,
Возникла аналогичная ошибка, индекса в базе нет, удалить через DROP INDEX не получается.
Объект сохраняется в метаданных, но при публикации выдает ошибку
Здравствуйте, Олег!
Попробуйте вывести список всех индексов в базе, чтобы удостовериться, что такого индекса действительно нету:
SELECT TableName = t.name, IndexName = ind.name, IndexId = ind.index_id, ColumnId = ic.index_column_id, ColumnName = col.name, ind.*, ic.*, col.* FROM sys.indexes ind INNER JOIN sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id INNER JOIN sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id INNER JOIN sys.tables t ON ind.object_id = t.object_id WHERE ind.is_primary_key = 0 AND ind.is_unique = 0 AND ind.is_unique_constraint = 0 AND t.is_ms_shipped = 0 ORDER BY t.name, ind.name, ind.index_id, ic.index_column_id
Если нету, попробуйте сгенерировать метаданные для объекта и сгенерировать исходный код, после чего проверить повторно.
Добрый день, Андрей,
Проверил индекса действительно нет, сгенерировал метаданные для объекта и исходный код, но эффект тот же, индекс так и не появился, объект невозможно опубликовать, но он сохраняется, все бы ничего, но при попытке обращаться к новым полям в БП выдает ошибку "Элемент коллекции не существует"
Попробуйте создать индекс для данной таблицы с таким именем, на которое "ругается" при компиляции.
Была похожая ситуация, только с Constraint. Это помогло.
Создал индекс, теперь при публикации возникает следующая ошибка: "Ошибка
Ошибка сохранения: Ошибка операции: индекс или статистика с именем "IGNfQFgKE05l2MANQO3hW70nQsso" уже существует в таблица "dbo.Activity"."
Здравствуйте, Олег.
Напишите, пожалуйста, на support, - со ссылкой на копию базы, - попробуем разобраться.