Выполнение соединения между двумя базами данных с разными параметрами сортировки на SQL Server и получение ошибки
Я знаю, я знаю, что я написал в вопросе, я не удивлюсь. Но моя ситуация медленно работает над унаследованной системой POS, и мой предшественник, по-видимому, не знал о соединениях, поэтому, когда я заглянул на одну из внутренних страниц, которая загружается в течение 60 секунд, я вижу, что это довольно быстро, перепишите эти 8 запросов как один запрос с ситуацией JOINs. Проблема в том, что помимо того, что он не знает о соединениях, у него также, похоже, был фетиш для нескольких баз данных и Сюрприз, сюрприз они используют различные параметры. Дело в том, что мы используем все "нормальные" латинские символы, которые англоязычные люди будут рассматривать весь алфавит, и все это будет использоваться через несколько месяцев, поэтому мне нужен только бандаж.
короче говоря, мне нужен какой-то метод для приведения к одной сортировке, чтобы я мог сравнить два поля из двух баз данных.
точная ошибка:
Не удается разрешить конфликт параметров сортировки между "SQL_Latin1_General_CP850_CI_AI" и "SQL_Latin1_General_CP1_CI_AS" в равный к деятельности.
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
способ общего назначения-принудить параметры сортировки к DATABASE_DEFAULT. Это удаляет жесткое кодирование имени сортировки, которое может измениться.
это также полезно для таблицы temp и переменных таблицы, и где вы можете не знать параметры сортировки сервера (например, вы являетесь поставщиком размещения вашей системы на сервере клиента)
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