Выполнение соединения через две базы данных с различными сопоставлениями на SQL Server и получение ошибки

Я знаю, я знаю с тем, что я записал в вопросе, я не должен быть удивлен. Но моя ситуация медленно работает над наследованной системой POS, и мой предшественник, по-видимому, не знал о СОЕДИНЕНИЯХ поэтому, когда я изучил одну из внутренних страниц, которая загружается в течение 60 секунд, я вижу, что это - довольно быстрое, перепишите эти 8 запросов как один запрос с ситуацией с СОЕДИНЕНИЯМИ. Проблема состоит в том, что помимо не знания о СОЕДИНЕНИЯХ он также, кажется, имел фетиш для нескольких баз данных и удивления, удивлял, они используют различные сопоставления. Факт вопроса, мы используем все "нормальные" латинские символы, что англоязычные люди рассмотрели бы весь алфавит, и эта целая вещь выйдет из употребления через несколько месяцев, таким образом, лейкопластырь будет всем, в чем я нуждаюсь.

Длинная короткая история, мне нужен некоторый метод для кастинга к единственному сопоставлению, таким образом, я могу сравнить два поля от двух баз данных.

Точная ошибка:

Не может разрешить конфликт сопоставления между "SQL_Latin1_General_CP850_CI_AI" и "SQL_Latin1_General_CP1_CI_AS" в равном операции.

58
задан casperOne 3 January 2011 в 20:55
поделиться

2 ответа

Вы можете использовать предложение collate в запросе (я не могу найти свой пример прямо сейчас, поэтому мой синтаксис, вероятно, неправильный - надеюсь, он укажет вам правильное направление)

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
118
ответ дан 24 November 2019 в 18:40
поделиться

Общий способ - привести параметры сортировки к DATABASE_DEFAULT. Это удаляет жесткое кодирование имени сопоставления, которое могло измениться.

Это также полезно для временных таблиц и переменных таблиц, а также там, где вы можете не знать параметры сортировки сервера (например, вы являетесь поставщиком, размещающим свою систему на сервере клиента)

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
58
ответ дан 24 November 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: