Миграция существующего приложения для принятия Unicode - PullRequest
0 голосов
/ 17 сентября 2008

Мы занимаемся обновлением нашего приложения до полной совместимости с Юникодом, так как мы недавно получили Delphi 2009, который предоставляет это из коробки. Я ищу любого, кто имеет опыт обновления приложения для приема символов Unicode. Конкретно отвечает на любой из следующих вопросов.

  • Нам нужно изменить VarChars на NVarchar, Char на NChar. Здесь есть какие-нибудь ошибки ...
  • Нам нужно обновить все операторы SQL, чтобы включить N перед строками SQL. Поэтому обновление tbl_Customer set Name = 'Smith' должно стать Update tbl_Customer set Name = N 'Smith'. Есть ли способ по умолчанию для этого для определенных полей. Кажется необычным, что это все еще требуется.
  • Можно ли установить какие-либо настройки по умолчанию в SQLServer, которые упростят эту задачу?

ps Нам также нужно обновить наш код Oracle

Ответы [ 3 ]

1 голос
/ 17 сентября 2008

Oracle не требует использования nvarchar для хранения строк Unicode - сервер можно настроить для хранения varchar2 в UTF-8. Если вы ранее поддерживали только ASCII, он должен быть прозрачным. Это должно исключить необходимость всех операций поиска и замены на стороне приложения для ' до N'.

Что касается точки зрения Дэмиена: сейчас это может вам не помочь, но вы должны действительно сделать приоритетом избавление от непараметрических запросов. Они - ничто иное, как увлечение вашей системы с точки зрения обслуживания, производительности и безопасности.

1 голос
/ 17 сентября 2008

Для SQL Server очевидно, что ограничения для nchar / nvarchar составляют половину их эквивалентов char / varchar (если вы не перенесете все> 4000 в nvarchar (max))

0 голосов
/ 17 сентября 2008

Дэмиен

Я не уверен, насколько полезен твой ответ. У нас есть 700 000 строк скомпилированной кодовой базы, написанной за последние десять лет, которая содержит большое количество SQL-запросов. Большинство из них стандартизированы до нескольких функций, которые являются основой для большинства обновлений в базе данных. Они могут быть обновлены довольно просто. Однако нам также необходимо проверить каждое условие where для CustomerName = '% s', которое теперь должно быть CustomerName = N '% s'

Это реальный вопрос, на который нужен реальный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...