基于Case防止SSIS错误的最佳实践

时间:2017-03-27 14:05:24

标签: sql-server ssis ssis-2012 ssis-2008


我正在使用一个非常大的基于SSIS的系统,我们遇到的问题之一就是用户将输入不是大写的数据,然后出现连接问题。我们尝试创建数字键,但由于我们无法始终控制源的数据,因此当我们加入非数字键时,我们仍会遇到问题。
我想知道防止这个问题的最佳方法是什么?有没有办法让SSIS不区分大小写?或者将所有SQL Server输出设置为更高的排序规则?

1 个答案:

答案 0 :(得分:0)

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

不幸的是,您可能无权更改数据库,这些人的顾虑会覆盖您的建议。在这种情况下,您可以通过多种方式之一调整SSIS包以自动转换为大写。

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

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