Question

Nous sommes en train de mettre à niveau notre application pour la rendre entièrement compatible avec Unicode, car nous venons de recevoir Delphi 2009, qui fournit cette solution prête à l'emploi. Je recherche toute personne ayant l'expérience de la mise à niveau d'une application pour accepter les caractères Unicode. Répondez spécifiquement à l’une des questions suivantes.

  • Nous devons changer VarChars en NVarchar, Char en NChar. Y a-t-il des pièges ici.
  • Nous devons mettre à jour toutes les instructions SQL pour inclure N devant toutes les chaînes SQL. Donc, mettez à jour tbl_Customer set Name = 'Smith' doit devenir Mettre à jour tbl_Customer set Name = N 'Smith'. Existe-t-il un moyen de définir cette option par défaut pour certains champs? Cela semble extraordinaire, cela reste nécessaire.
  • Est-il possible de définir des paramètres par défaut dans SQLServer afin de simplifier les choses?

ps Nous devons également mettre à jour notre code Oracle

Était-ce utile?

La solution

Oracle ne vous oblige pas à utiliser nvarchar pour stocker les chaînes Unicode & # 8212; le serveur peut être configuré pour stocker varchar2 dans UTF-8. Si vous ne preniez auparavant en charge que l’ASCII, il devrait être transparent. Cela devrait vous éviter de recourir à toutes les opérations de recherche-remplacement de ' à N' du côté de l'application.

Pour ce qui est de l'argument de Damien: cela ne vous aidera peut-être pas maintenant, mais vous devriez vraiment en faire une priorité pour vous débarrasser des requêtes non paramétrées. Ils ne constituent pas un frein pour votre système du point de vue de la maintenance, des performances et de la sécurité.

Autres conseils

Il est évident avec SQL Server que les limites de nchar / nvarchar correspondent à la moitié de leurs équivalents char / varchar (sauf si vous migrez tout ce qui est & 4000 - nvarchar (max))

Damien

Je ne suis pas sûr de l'utilité de votre réponse. Nous avons une grande base de code compilée de 700 000 lignes écrite au cours des dix dernières années et contenant un grand nombre de requêtes SQL. La plupart sont normalisées à quelques fonctions qui sont à la base de la plupart des mises à jour de la base de données. Ceux-ci peuvent être mis à jour tout simplement. Cependant, nous devons également vérifier chaque clause where pour CustomerName = '% s', qui devrait maintenant être CustomerName = N '% s'

C’est une vraie question qui a besoin d’une vraie réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top