2

我们刚刚注意到我们的 2 个服务器已使用SQL_Latin1_General_CP1_CI_ASLatin1_General_CI_AS设置。

我创建了一个脚本,它再次比较两个数据源(因为它是一个简单的 SELECT 语句,我没有包含它,它使用相同的列但来自不同的源)当我尝试将它们合并在一起时我收到了整理错误。

消息 468,级别 16,状态 9,第 2 行无法解决UNION 操作中“ SQL_Latin1_General_CP1_CI_AS ”和“ Latin1_General_CI_AS ”之间的排序规则冲突。

其中一个来源是由SSIS包填充的表,有没有办法调整 SSIS 项目以在将“SQL_Latin1_General_CP1_CI_AS”格式发送到目标表之前将其转换为“Latin1_General_CI_AS”?

谢谢!

4

2 回答 2

1

COLLATE Latin1_General_CI_AS您可以像这样在使用 SQL_Latin1_General_CP1_CI_AS 的表中的每一列之后使用句子。

SELECT COLUMN_A COLLATE Latin1_General_CI_AS AS COL1 
FROM TABLE
于 2012-11-01T16:56:01.760 回答
0

您的错误消息看起来像您的 UNION 在单个 SQL 语句中?例如选择...联合...选择

正如 Shiva 所描述的,在您的 SSIS 数据流中,您可以使用两个(或更多)OLE DB 源对象并将它们与“Union All”转换结合起来。每个 OLE DB 源对象将只有一个没有 UNION 子句的 SELECT。这种设计在设计/维护(列名上的联合,无需从每个源填充每一列)和运行时吞吐量方面也具有优势。

我认为您还需要在 OLE DB Source 对象上使用此技术。 http://blog.stevienova.com/2009/04/16/ssis-pulling-data-from-a-non-default-collat​​ion-db-to-a-default-collat​​ion-db/

于 2012-11-05T04:06:33.303 回答