Możesz rozwiązać ten problem, wymuszając sortowanie używane w zapytaniu, aby było konkretnym sortowaniem, np. SQL_Latin1_General_CP1_CI_AS lub DATABASE_DEFAULT . Na przykład:
SELECT MyColumn
FROM FirstTable a
INNER JOIN SecondTable b
ON a.MyID COLLATE SQL_Latin1_General_CP1_CI_AS =
b.YourID COLLATE SQL_Latin1_General_CP1_CI_AS
W powyższym zapytaniu a.MyID i b.YourID będą kolumnami z tekstowym typem danych. Korzystanie z funkcji COLLATE zmusi zapytanie do zignorowania domyślnego sortowania w bazie danych i zamiast tego użyje podanego sortowania, w tym przypadku SQL_Latin1_General_CP1_CI_AS .
Zasadniczo chodzi o to, że każda baza danych ma własne sortowanie, które „zapewnia reguły sortowania, wielkość liter i właściwości czułości akcentu dla twoich danych” (z https://technet.microsoft.com/en-us/library/ms143726.aspx ) i dotyczy kolumn z tekstowymi typami danych , np. VARCHAR , CHAR , NVARCHAR itp. Gdy dwie bazy danych mają różne sortowania, nie można porównywać kolumn tekstowych z operatorem takim jak równa się (=) bez rozwiązania konfliktu między dwoma różnymi sortowaniami.