В настоящее время наша база данных использует Win1252 как единственную кодировку символов. Вскоре нам придется поддерживать Unicode в таблицах базы данных, а это значит, что мы должны выполнить эту миграцию для четырех баз данных и около 80 приложений Delphi, которые работают внутри компании в среде 24/7. Есть ли рекомендации по миграции базы данных на UTF-8 (или UNICODE_FSS) для приложений Delphi? Некоторые вопросы перечислены ниже. Заранее большое спасибо за ваши ответы!
- есть ли инструменты, которые помогают с переносом существующих баз данных (размером от 250 МБ до 2 ГБ, без полей Blob), путем сброса данных, воссоздания базы данных с помощью UNICODE_FSS или UTF-8 и загрузки данные обратно?
- есть ли известные проблемы с Delphi 2009, dbExpress и Interbase 7.5, связанные с наборами символов Unicode?
- Вы бы порекомендовали сначала обновить базы данных до Interbase 2009? (Это обновление запланировано, но не имеет высокого приоритета)
- можем ли мы просто перенести базу данных, и Delphi будет обрабатывать наборы символов Unicode автоматически, или нам также придется изменить все типы символьных полей в каждом модуле Datamodule (dfm и исходный код)?
- Какую стратегию вы бы порекомендовали для работы над миграцией параллельно с обычной разработкой и обслуживанием существующего приложения? Приложение работает внутри компании, поэтому разработка и администрирование базы данных выполняются внутри компании.
Обновление: из ветки форума обсуждения InterBase: Базы данных Unicode в InterBase - правда? ( это не моя тема, но она показывает, что некоторые проблемы все еще существуют в InterBase XE).
Вот несколько отчетов, которые я отправил: QC # 92867 - Строковые поля из представлений пусты, только если представление включает объединение и при использовании ClientDataSet. Это было обнаружено как отсутствующие данные в нескольких моих отчетах, которые больше не работают.
QC # 91494 - IB Данные столбца символов Символьные поля (например: Char (1)) дополняются пробелами при извлечении через хранимую процедуру. Тесты не пройдены - например: Если Active = "Y". Я активно использую хранимые процедуры с формами, и они не работают.
QC # 91355 - IBSqlMonitor не работает. Вывод IBSqlMonitor несколько искажен, что делает этот инструмент бесполезным. (Значит, даже лопата сломана!)
Не сообщается - постоянные поля в TClientDataSet не работают для TWideString.
Другие связанные записи QC:
QC # 94455 Ошибка типа символа Unicode в SQL (InterBase XE)