poniedziałek, 15 kwietnia 2013

T-SQL łączenie dwóch baz z różnym kodowaniem (?) znaków

Recepta na błąd:
Cannot resolve the collation conflict between "Polish_100_CI_AS" and "Polish_CI_AS" in the equal to operation.
W przypadku zapytania łączącego (join) dwie bazy danych z różnymi ustawieniami kodowania. Błąd powstaje przy joinie na pole, które w dwóch bazach ma różne kodowania.

W pytaniu przy join należy dopisać:

COLLATE Database_default

Czyli:

Select p1.*, p2.* from Baza1.dbo.lista1 p1 join Baza2.dbo.lista2 p2 on p2.string COLLATE Database_default = p1.string