Classements dans les requêtes distribuées

SQL Server prend en charge les classements multiples. Le classement des données peut être différent d'une colonne à l'autre et chaque valeur de caractère est associée à une propriété de classement. SQL Server interprète la propriété de classement des données de caractère provenant d'une source de données distante et la traite en conséquence.

SQL Server utilise le classement des données distantes pour les opérations de comparaison et de tri sur les données de caractères (Unicode et non Unicode). Les informations de classement pour des données de caractères distantes sont déterminées différemment selon que la source de données correspond ou non à une instance de SQL Server :

  • Le fournisseur OLE DB pour Microsoft SQL Server Native Client indique automatiquement le classement de chaque colonne qu'il renvoie.

  • Dans le cas de tables distantes ne se trouvant pas dans SQL Server mais pour lesquelles vous savez que le classement est le même que l'un des classements pris en charge par SQL Server, l'administrateur peut spécifier le classement par défaut de la source de données OLE DB dans le cadre de la définition du serveur lié. SQL Server peut alors utiliser le classement par défaut comme classement s'appliquant à toutes les colonnes renvoyées du serveur lié.

Une fois que SQL Server a déterminé le classement d'une colonne de caractères distants, il suit les mêmes règles de conversion, de comparaison et d'opérations sur les colonnes de tables distantes que sur les colonnes locales. Pour plus d'informations sur les règles que SQL Server applique aux classements et sur les noms de classement pris en charge par SQL Server, consultez Utilisation des classements.

Si le classement de la base de données distante par défaut est différent de celui de la base de données locale, les chaînes distantes sont alors traitées dans le format Unicode. Pour contribuer à s'assurer que les chaînes sont bien traitées de façon uniforme entre tous les serveurs distants, procédez comme suit :

  • Utilisez le format Unicode, de la forme N**'string'**, afin de spécifier des littéraux de chaîne dans les requêtes distribuées.

  • Définissez des serveurs liés disposant d'une base de données cible explicite au lieu d'utiliser une base de données distante par défaut. Il est possible que cette base de données s'appuie sur un autre classement.

Définition des options des serveurs liés

Les options de serveur lié suivantes définies par l'utilisation de sp_serveroption contrôlent si SQL Server utilise les classements des serveurs liés et comment il opère :

  • L'option use remote collation spécifie si le classement d'une colonne distante ou d'un serveur local doit être employé. Lorsque cette propriété a la valeur true, le classement des colonnes distantes est utilisé pour les sources de données SQL Server et le classement spécifié dans collation name est employé pour les sources de données autres que SQL Server. Lorsqu'elle a la valeur false, les requêtes distribuées utilisent toujours le classement par défaut de l'instance du serveur local et collation name et le classement des colonnes distantes sont alors ignorés.

  • L'option collation name spécifie le nom du classement employé par la source de données distante si use remote collation a la valeur true et si la source de données n'est pas une source de données SQL Server. Le nom doit correspondre à l'un des classements pris en charge par SQL Server. Utilisez cette option si vous voulez accéder à une source de données OLE DB autre que SQL Server, mais dont le classement corresponde à un des classements SQL Server. Les sources de données SQL Server font état du classement spécifique à chacune de leurs colonnes et l'option collation name est ignorée dans le cas de serveurs liés faisant référence à des sources de données SQL Server.

    Notes

    L'utilisation des options de serveurs liés constitue le seul moyen d'activer l'utilisation de classements distants. Ainsi, des requêtes construites utilisant des noms ad hoc fournis par OPENROWSET et OPENDATASOURCE ne peuvent pas s'appuyer sur les informations de classement relatives à des données de caractères distantes. De plus, tous les serveurs liés dans la version 7.0 de SQL Server mis à niveau vers SQL Server 2000 ou ultérieur voient leur option use remote collation définie sur false.

Sommaire des paramètres d'option

Le tableau suivant reprend comment SQL Server détermine le mode de classement utilisé pour chaque colonne si l'option use remote collation est définie sur true (ou sur on le cas échéant).

Type de serveur lié

Nom de classement non défini

Nom de classement défini (sur CollX)

SQL Server

Classement propre à la colonne distante.

Classement propre à la colonne distante.

Autres

Classement par défaut de l'instance locale de SQL Server.

CollX

Le tableau suivant résume comment SQL Server détermine le mode de classement utilisé pour chaque colonne si l'option use remote collation est définie sur false(ou sur off le cas échéant).

Type de serveur lié

Nom de classement non défini

Nom de classement défini (sur CollX)

SQL Server

Classement par défaut de l'instance locale de SQL Server.

Classement par défaut de l'instance locale de SQL Server.

Autres

Classement par défaut de l'instance locale de SQL Server.

Classement par défaut de l'instance locale de SQL Server.