将链接服务器中的列收集到另一个服务器表“ SQL_Latin1_General_CP1_CI_AS”和“ Latin1_General_CI_AS”中

时间:2019-06-05 04:27:51

标签: sql-server tsql collation

当两个服务器没有相同的排序规则时,我通常在列名后使用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]

0 个答案:

没有答案