COLLATE столбцы со связанного сервера в таблицы других серверов "SQL_Latin1_General_CP1_CI_AS" и "Latin1_General_CI_AS" - PullRequest
0 голосов
/ 05 июня 2019

Обычно я использую 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]
...