Gestion de la conversion des données entre des pages de codes client/serveur
Cette rubrique explique comment préserver l'intégrité des données de caractères lorsque la base de données ne stocke pas les données de caractères à l'aide des types de données Unicode et lorsque les applications côté client interagissant avec les données ne sont pas compatibles Unicode. Dans ce cas, la page de codes de stockage des données doit être identique à la page de codes de l'application cliente. Si ces deux pages de codes sont différentes, la conversion client/serveur peut entraîner la perte de certains caractères.
La désactivation de la fonctionnalité AutoTranslate (Conversion automatique) du pilote ODBC de SQL Server en vue de l'insertion des données définies dans une page de codes différente par le serveur n'est pas prise en charge. En outre, la désactivation de la fonctionnalité AutoTranslate n'empêche pas la conversion de la page de codes pour les événements de langage SQL. Ainsi, si les pages de codes du client et de la base de données ne correspondent pas, la conversion des pages de codes s'applique généralement à toute chaîne de caractères non-Unicode envoyée vers ou à partir du serveur.
Il est conseillé d'éviter une telle situation dans la mesure du possible. L'idéal est que le serveur correspondant à une page de codes spécifique communique uniquement avec les clients utilisant cette même page de codes. Lorsque cela n'est pas possible, il est recommandé d'utiliser une autre page de codes présentant pratiquement le même jeu de caractères. Par exemple, les pages de codes 1252 (Latin1) et 850 (Multilingual Latin1) peuvent stocker pratiquement le même jeu de caractères, permettant ainsi de convertir la plupart des caractères d'une page de codes à l'autre sans perdre aucune donnée.
Si vous communiquez avec des clients utilisant des pages de codes différentes, la solution prise en charge consiste à stocker les données dans les colonnes Unicode. Si aucune de ces options n'est réalisable, stockez les données dans des colonnes binaires à l'aide des types de données binary, varbinary ou varbinary(max). Sachez toutefois que les données binaires ne peuvent être stockées et comparées que par ordre binaire, ce qui les rend moins souples que les données de caractères.