2015-04-25 2 views
0

текущей базы данных я использую «PrimaryDatabase» имеет сверку «SQL_Latin1_General_CP1_CI_AS», в то время как «SecondaryDatabase» Я пытаюсь получить доступ имеет сверку «Arabic_CI_AS»«Не удается разрешить конфликт параметров сортировки» даже после фиксации сверки

Я изменил настройку для SecondaryDatabase и установил ее на «SQL_Latin1_General_CP1_CI_AS» и удостоверился, что она была изменена, а также в ее таблицах.

Однако, когда я запускаю запрос ниже, я все еще сталкиваюсь с конфликтом сортировки.

select * from [MYSERVER].[SecondaryDatabase].[dbo].[SecondaryTableName] 
where ltrim(rtrim([SecondaryTablename])) not in (select ltrim(rtrim(PrimaryFieldname)) from PrimaryTablename where PrimaryFieldName2=1) 
+0

Вы должны установить параметры сортировки на уровне –

+0

@GiorgosBetsos Можете ли вы сказать мне, как я могу это сделать? – user4612290

+0

Что вы подразумеваете под 'а также в его таблицах'? Изменение сортировки базы данных по умолчанию не приводит к автоматическому изменению сортировки существующих столбцов. Вам нужно либо «ALTER» каждого столбца отдельно, либо перестроить каждую таблицу с новой сортировкой. –

ответ

2

Один из способов сделать вашу работу запроса заключается в использовании COLLATE условия для того, чтобы применить параметры сортировки литой на обоих полях будучи вовлеченным в предикате WHERE пункта:

select * 
from [MYSERVER].[SecondaryDatabase].[dbo].[SecondaryTableName] 
where ltrim(rtrim([SecondaryFieldname])) COLLATE SQL_Latin1_General_CP1_CI_AS 
     not in (select ltrim(rtrim(PrimaryFieldname)) COLLATE SQL_Latin1_General_CP1_CI_AS 
       from PrimaryTablename 
       where PrimaryFieldName2 = 1) 

применяется Предложение COLLATE до PrimaryFieldname может не понадобиться, так как это сортировка по умолчанию соответствующей базы данных (поэтому, вероятно, PrimaryFieldname уже имеет эту сортировку).

Другим решением является изменение параметров сортировки на уровне поля, например .:

ALTER TABLE SecondaryDatabase 
ALTER COLUMN SecondaryFieldname VARCHAR(50) 
COLLATE SQL_Latin1_General_CP1_CS_AS NULL