Обычно я использую COLLATE после имени столбца, когда два сервера не имеют одинаковую сортировку. Мой связанный сервер, с которого я извлекаю данные, - "Latin1_General_CI_AS", а мой целевой сервер, на который я вставляю данные связанного сервера, - "SQL_Latin1_General_CP1_CI_AS".
Я попытался в приведенном ниже коде COLLATE и не удалось. Я не могу изменить сортировку таблиц, потому что зависимые таблицы указывают на них. Я должен был бы восстановить таблицы, и это в настоящее время не вариант.
Сообщение 468, Уровень 16, Состояние 9, Строка 2055
Не удается разрешить конфликт сопоставления между «SQL_Latin1_General_CP1_CI_AS» и «Latin1_General_CI_AS» в операции равно.
TRUNCATE TABLE [DAT_Table]
INSERT INTO [DAT_Table]
([Entity]
,[Identifier]
,[Name]
,[Description]
,[PayType])
SELECT
HRORGANIZATION COLLATE SQL_Latin1_General_CP1_CI_AS
,STEPANDGRADESCHEDULE COLLATE SQL_Latin1_General_CP1_CI_AS
,DESCRIPTION COLLATE SQL_Latin1_General_CP1_CI_AS
,CONVERT(VARCHAR(10), STEPANDGRADEVERSION, 111) COLLATE SQL_Latin1_General_CP1_CI_AS
,CASE WHEN [PAYRATETYPE] = '1' THEN 'H' COLLATE SQL_Latin1_General_CP1_CI_AS WHEN [PAYRATETYPE] = '2' THEN 'S' COLLATE SQL_Latin1_General_CP1_CI_AS END AS PayType
FROM [LinkedServer].[CS_Table]