2009-10-05 4 views
0

J'ai un package SQL Server 2000 DTS.SQL Server 2000 DTS - Impossible de résoudre le conflit de classement pour égal à l'opération

L'une des étapes de ce paquet a l'instruction SQL suivante:

SELECT * 
FROM [Crocus_Limited$OrderRequestDetail] 
WHERE (rep_updated > GETDATE() -2) 
AND NOT EXISTS 

(SELECT OrderID 
FROM NavisionUpgrade.navision4.dbo.[WEBOrderDetails] rd 
WHERE rd.OrderID =  [Crocus_Limited$OrderRequestDetail].OrderID 
AND rd.NavisionItemNo = [Crocus_Limited$OrderRequestDetail].NavisionItemNo) 

Il est failing- me donner l'erreur: ne peut pas résoudre les conflits de classement pour égal au fonctionnement.

Ce DTS se déplace essentiellement des données d'un DB à un autre (situés dans différentes zones géographiques)

comment puis-je modifier la requête ci-dessus pour résoudre ce problème?

Répondre

2

L'une des colonnes de jointure ou les deux ont l'un des types de données char (char, nchar, varchar, nvarchar) qui est stocké dans des classements incompatibles dans chaque base de données.

Vous pouvez spécifier le classement à utiliser dans toute comparaison de chaîne. La meilleure façon de le faire est de spécifier le classement par défaut de la machine sur laquelle la requête est en cours d'exécution (je devine que NavisionItemNo est la colonne de problème):

...AND rd.NavisionItemNo collate database_default = [Crocus_Limited$OrderRequestDetail].NavisionItemNo collate database_default) 

EDIT

est-OrderID une colonne varchar aussi? Si oui, essayez

...WHERE rd.OrderID collate database_default = [Crocus_Limited$OrderRequestDetail].OrderID collate database_default 
AND rd.NavisionItemNo collate database_default = [Crocus_Limited$OrderRequestDetail].NavisionItemNo) collate database_default 
+0

J'ai changé la déclaration: sélectionner * de [Crocus_Limited $ OrderRequestDetail] OÙ (rep_updated> GETDATE() -2) et NON EXISTE (Select OrderID DE NavisionUpgrade.navision4.dbo. [WEBOrderDetails] e où rd.OrderID = [Crocus_Limited $ OrderRequestDetail] .OrderID ET rd.NavisionItemNo collationner database_default = [Crocus_Limited $ OrderRequestDetail] .NavisionItemNo collationner database_default) et je reçois toujours la même erreur .... – Alex

0

que les deux anciens postes mentionner vous devez utiliser l'attribut collationner à chaque colonne nonumeric mais un coup d'oeil un le classement de la db cible et pour ce classement (par exemple SQL_Latin_CI_AS). Sachez qu'une table peut avoir sa propre collation même si une colonne peut avoir une autre collation, alors jetez un coup d'œil à vos définitions.

paix et bonne chance Ice

Questions connexes