Wykonywanie połączenia między dwiema bazami danych z różnymi kolacjami na serwerze SQL i uzyskanie błędu

Wiem, Wiem z tego co napisałem w pytaniu nie powinno mnie dziwić. Ale Moja sytuacja powoli pracuje nad odziedziczonym systemem POS, a mój poprzednik najwyraźniej nie był świadomy JOINs, więc kiedy spojrzałem na jedną z wewnętrznych stron, które ładują się przez 60 sekund, widzę, że jest to dość szybkie, przepisać te zapytania 8 jako jedno zapytanie z sytuacją JOINs. Problem w tym, że poza tym, że nie wiem o dołącza on również wydaje się mieć Fetysz dla wielu baz danych i zaskoczyć, zaskoczyć ich używaj różnych zestawień. Faktem jest, że używamy wszystkich" normalnych " znaków łacińskich, które anglojęzyczni ludzie będą rozważać cały alfabet i to wszystko będzie z użycia w ciągu kilku miesięcy, więc bandaid jest wszystko, czego potrzebuję.

Krótko mówiąc, potrzebuję jakiejś metody, aby rzucić do jednego zestawienia, abym mógł porównać dwa pola z dwóch baz danych.

Dokładny błąd to:

Nie można rozwiązać konfliktu kolacji między "SQL_Latin1_General_CP850_CI_AI" oraz "SQL_Latin1_General_CP1_CI_AS" w równa operacji.

Author: casperOne, 2010-02-18

2 answers

Możesz użyć klauzuli collate w zapytaniu (nie mogę teraz znaleźć mojego przykładu, więc moja składnia jest prawdopodobnie zła - mam nadzieję, że wskaże ci właściwy kierunek)

select sone_field collate SQL_Latin1_General_CP850_CI_AI
  from table_1
    inner join table_2
      on (table_1.field collate SQL_Latin1_General_CP850_CI_AI = table_2.field)
  where whatever
 111
Author: Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-18 17:39:45

Ogólnym celem jest wymuszenie kompilacji do DATABASE_DEFAULT. Usuwa to twarde kodowanie nazwy kolacji, która może ulec zmianie.

Jest to również przydatne dla tabeli temp i zmiennych tabeli, i tam, gdzie możesz nie znać zestawienia serwera (np. jesteś sprzedawcą umieszczającym swój system na serwerze klienta)

select
    sone_field collate DATABASE_DEFAULT
from
    table_1
    inner join
    table_2 on table_1.field collate DATABASE_DEFAULT = table_2.field
where whatever
 52
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-09 14:09:05