【问题标题】:Best practices to prevent SSIS Errors based on Case基于案例防止 SSIS 错误的最佳实践
【发布时间】:2017-03-27 14:05:23
【问题描述】:


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

【问题讨论】:

  • 这与 SSIS 无关。 列的排序规则设置为区分大小写的排序规则。常见的做法是使用大小写不敏感排序规则。您可以为连接指定不同的排序规则,但这会阻止使用涵盖该字段的索引。你为什么要加入 text 字段?
  • 您在哪里遇到这个问题,使用 SSIS 中的查找组件或其他什么?

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


【解决方案1】:

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

很遗憾,您可能无权更改数据库,而这些人的担忧会推翻您的建议。在这种情况下,您可以通过多种方式之一调整 SSIS 包以自动转换为大写。

如果您使用查询作为数据源(或在查找中),则将 UPPER(fieldname) 而不是 fieldname 添加到联接中。这可能会减慢一些速度(这就是为什么第一个解决方案是首选解决方案的原因。)它是否会减慢速度到无法接受的程度,只有在您尝试之后才能发现。

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

【讨论】:

  • 我真的没有看到任何这些解决方案对我有用。客户数据以压缩形式来自与我们签订合同的一些大客户,这些客户甚至定义了我们收到的数据。我们必须自己处理。至于做一个鞋面,我偶尔会在遇到错误时这样做,但是由于我们有很多 SSIS(超过一千个),我想要一个全面的解决方案。因此,我想知道其他拥有大型系统的人如何处理区分大小写的问题。
猜你喜欢
  • 2023-02-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多