J'ai 2 bases de données à distance dans le cadre d'une requêterequête SQL Server contre deux bases de données liées en utilisant différents classements
select p.ID,p.ProjectCode_VC,p.Name_VC,v.*
FROM [serverB].Projects.dbo.Projects_T p
LEFT JOIN [serverA].SOCON.dbo.vw_PROJECT v on
p.ProjectCode_VC = v.PROJ_CODE
Le problème est que serverA utilise le classement Latin1_General_BIN
et serverB utilise Latin1_General_CP1_CP_AS
et la requête refuse d'exécuter .
Les deux serveurs sont des serveurs SQL 2000. Les deux bases de données sont gravées dans la pierre, donc je ne peux pas changer leurs collations, malheureusement.
De toute façon, vous savez comment faire fonctionner ça?
Mise à jour: J'ai trouvé une solution alternative. Dans les propriétés du serveur lié, vous pouvez spécifier le classement du serveur lié.
Si les deux serveurs ont le même classement, vous pouvez définir la compatibilité de classement sur le serveur lié à « true » pour améliorer les performances. – super9
Petit point découvert aujourd'hui: si vous forcez le classement du serveur lié, le moteur de requête risque de ne pas pouvoir utiliser les index distants et aura plutôt besoin de récupérer plus de données pour la comparaison/filtrage local! (par exemple, si vous voyez l'opérateur de plan de requête "Remote Scan", ceci est un signe potentiellement très mauvais) – Tao