2008-09-17 21 views
0

Nous avons en cours de mise à niveau de notre application vers la compatibilité Unicode complète, comme nous l'avons récemment obtenu Delphi 2009, qui fournit ce hors de la boîte. Je cherche quelqu'un qui a l'expérience de la mise à niveau d'une application pour accepter les caractères Unicode. Plus précisément des réponses à l'une des questions suivantes.Migration d'une application existante pour accepter Unicode

  • 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 Mettre à jour tbl_Customer set Name = 'Smith' doit devenir Update tbl_Customer set Nom = N 'Smith'. Y a-t-il un moyen de faire cela par défaut pour certains champs? Il semble extraordinaire que cela soit encore nécessaire.
  • Est-il possible d'obtenir des paramètres par défaut configurés dans SQLServer qui vont simplifier cela?

ps Nous devons aussi améliorer notre code Oracle

Répondre

1

Oracle n'exige pas que vous utilisiez nvarchar pour stocker des chaînes Unicode - le serveur peut être configuré pour stocker varchar2 en UTF-8. Si vous avez seulement pris en charge ASCII auparavant, il devrait être transparent. Cela devrait éviter le besoin de tous les côté recherche-et-remplacement côté application pour ' à N'. Pour ce qui est du point de Damien, cela ne vous aidera peut-être pas, mais vous devriez vraiment avoir comme priorité de supprimer les requêtes non paramétrées. Ils ne sont qu'une traînée sur votre système du point de vue de la maintenance, des performances et de la sécurité.

0

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 qui a été écrite au cours des dix dernières années et qui contient un grand nombre de requêtes sql. La plupart sont normalisées jusqu'à quelques fonctions qui sont à la base de la plupart des mises à jour de la base de données. Ceux-ci peuvent être mis à jour très simplement. Cependant, nous devons également vérifier chaque clause Where pour CustomerName = '% s' qui devrait maintenant être CustomerName = N '% s'

Ceci est une vraie question qui nécessite une vraie réponse.

1

Obvious avec SQL Server est que les limites pour nchar/nvarchar sont la moitié de leurs homologues char/varchar (sauf si vous migrez tout> 4000 à nvarchar (max))