2017-03-27 19 views
0


我正在处理一个相当大的基于SSIS的系统,并且我们偶尔遇到的问题之一是用户将输入的数据不会超出上限情况,然后有联接的问题。我们尝试创建数字键,但由于我们无法始终控制源数据,因此我们在加入非数字键时仍遇到问题。
我想知道什么最好的方法是防止这个问题?有没有办法让SSIS不区分大小写?还是将所有SQL Server输出设置为较高的排序规则?基于案例防止SSIS错误的最佳实践

+1

这与SSIS无关。 *列的*排序规则设置为case-* sensitive *排序规则。通常的做法是使用大小写不敏感的排序规则。您可以为连接指定不同的排序规则,但会阻止使用覆盖此字段的索引。无论如何,你为什么要加入一个* text *字段? –

+0

你在哪里遇到这个问题,用SSIS中的查找组件或其他东西? –

回答

0

您有几种可能的解决方案。第一个也是最好的解决方法是修复底层数据库,以便它不接受小写字母,但在该字段上设置与它所加入字段上使用的相同的排序规则。现在这可能会影响应用程序,并且用户将会因为无法再输入小写字符而出现更多错误,因此您需要向他们解释这些更改将会发生什么以及需要什么。或者看看目的地,它是否真的需要大写?或者他们可以将触发器添加到大写字段中,以便它对应用程序或用户不透明,数据发生更改,然后他们不会收到错误。这会减慢插入一点,但可能不足以注意到,除非所有数据都来自非常大的导入。

不幸的是,您可能没有权利更改数据库,并且这些人员的担心会覆盖您的建议。在这种情况下,您可以通过几种方法之一来调整SSIS包以自动转换为大写。

如果您使用查询作为您的数据源(或在查找中),则将UPPER(fieldname)而不是fieldname添加到连接中。这可能会让某些事情变得缓慢(这就是为什么第一个解决方案是首选解决方案的原因。)是否会让事情变得难以接受是您尝试后才能发现的。

如果您在合并之前执行合并连接,请在合并连接之前添加数据转换任务并将该字段转换为大写。这也可能导致一些缓慢。

+0

我真的没有看到任何这些解决方案为我工作。客户数据以一些大客户的压缩形式出现,我们与之签有合同,甚至定义了我们收到的数据。我们必须自己处理。 至于做一个Upper,我偶尔会遇到一个错误,但是由于我们有很多SSIS(超过一千个),我想要一个全面的解决方案。 因此,我想知道大型系统的其他人如何处理大小写敏感问题。 – yoelbenyossef