2011-12-16 2 views
7

Когда я оформить запрос SQL, иногда я получаю следующее сообщение об ошибке:сверка SQL конфликт сервер

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

Я часто решаю эту проблему, просто делаю обе таблицы сортировки одинаковыми. поэтому мне нужно знать, есть ли быстрый способ решить эту проблему.

Я хочу положить что-то специальное в мой SQL-запрос в результате, если сортировка не одинакова для обеих таблиц в sql-запросе, тогда запрос будет работать без ошибок. есть ли какое-нибудь решение?

ответ

12

Вы можете заставить какие параметры сортировки с помощью предложения COLLATE.

т.е.

SELECT * 
FROM Table1 T1 
INNER JOIN Server2.dbo.Table2 T2 
ON T1.Name = T2.Name COLLATE database_default 

конфликты сортировки распространены при объединении таблиц между двумя базами данных или серверами, особенно если версия БД отличается.

2

Вы можете задать параметры сортировки в запросе с помощью collate clause:

where col1 = col2 collate Latin1_General_CI_AS 
0

Возможно, существует вероятность, что на обоих серверах используются разные сортировки. Если да, то вы получите ошибку, аналогичную той, которую я упомянул в начале этой темы. Что вы должны делать в этом случае?

  1. Вы можете изменить параметры сортировки по умолчанию либо из столбцов таблицы/полей, но это может иметь мультипликационный эффект для других таблиц, используемых в настоящее с измененной таблицы.

  2. Используйте КОПИЯМ DATABASE_DEFAULT ключевое слово, подбирая столбцы/поля

как:

SELECT T1.EmployeeName, T2.DeptName 
FROM ServerA.dbo.EmpTab T1 
JOIN ServerB.dbo.DeptTab T2 
ON T1.DeptCode COLLATE DATABASE_DEFAULT 
= T2.DeptCode COLLATE DATABASE_DEFAULT 
+0

Пожалуйста, включите правильное форматирование в вашем посте. –

Смежные вопросы