有没有人有任何好的SSIS最佳实践提示和建议?

时间:2009-12-15 17:26:43

标签: ssis

我很想听听其他开发者关于SSIS最佳实践,注意事项,注意事​​项和技巧等的提示。

我想在我的公司介绍一些。

11 个答案:

答案 0 :(得分:5)

Jamie Thompson的这篇博客非常好,既有最佳实践也有命名约定:BestPracticesandNamingConventions

答案 1 :(得分:3)

SSIS使用的DT_WSTR(Unicode字符串)数据类型有4000个字符的限制。由于表达式转换为DT_WSTR,因此它们也不能超过4000个字符。

如果您在设计时超出限制,则会收到错误消息。但是,如果您在运行时这样做,会收到任何明显的警告或错误。操作将以静默方式失败,并且表达式可能会被错误地评估。

注意:这并不意味着字符串或SSIS变量不能超过4000个字符。该限制仅适用于使用DT_WSTR的表达式和其他位置。有关此问题的详细解释,请查看:

http://blogs.conchango.com/jamiethomson/archive/2009/05/27/4000-character-limit-in-ssis.aspx

以下是重现问题的示例:

  1. 创建一个名为的SSIS字符串变量 testVariable。
  2. 为变量分配长值 一个脚本任务(5000个字符,用于 实例)。作业应该 成功。
  3. 创建第二个任务并连接 使用优先级的两个任务 约束。设置评估 操作“表达”并设置 表达式为@testVariable!= “”。
  4. 即使变量不为空,约束也会错误地计算为False,因为表达式超过4000个字符。但是,这不会导致任何错误,包也不会失败。

    如果您在SSIS逻辑中发现了奇怪的行为,请查看您的表达式,并确保在评估时不超过4000个字符。

答案 2 :(得分:3)

这是关于移植SSIS包的配置文件的另一个很棒的博客 - 这是我们在分层环境中首次使用SSIS时遇到的一个大问题。

http://jessicammoss.blogspot.com/2008/05/ssis-configuration-to-configuration-to.html

答案 3 :(得分:2)

此外,尽可能多地使用属性版本,版本说明。虽然有一个包历史记录(右键单击并选择查看历史记录),但这会添加一个额外的文档层(注释很好但由于时间限制而不实用)。版本/版本说明有帮助,因为属性中的版本#可以与ETL设计文档修订历史记录日志协调良好。

答案 4 :(得分:1)

将您的SSIS包放在源代码管理中。

我们发现使用select field1的数据源,mytable中的field2比使用该选项从表中选择所有记录要快。我们在将数据预处理到导出的临时表中所做的一个包中产生了巨大的差异。

构建标准导入包和标准导出包,该包已经包含您通常需要的变量以及您通常需要的连接和常用的错误处理。通过打开模板包并以新名称保存,然后针对特定环境进行调整,而不是每次都从头开始构建所有内容,这要快得多。

SSIS的一些特定内容,如果您将导出发送到另一家公司,请确保将文件复制到存档位置以及ftp站点。当有关于何时发送的内容的问题时,这将极大地帮助。在不查看是否需要清理数据的情况下,切勿从其他来源导入数据。错过城市和州的地址是无用的,一封写着“与他的秘书交谈”的电子邮件也没用,不要将这些内容添加到您的数据库中。不要尝试添加插入失败的记录。如果名字是数据库中的必填字段,并且导入文件没有其中一条记录的值,则添加默认值(“未知”)或不尝试插入记录。

记录错误和处理的步骤。这将有助于找出出现问题的地方,当那个运行完美六个月的包突然失败时。

使用变量和配置在运行时更改内容。这使您可以拥有测试位置和prod位置,因此您不会将您不希望客户端在其ftp站点上看到的测试文件放在其中。

使用垃圾目的地(您可以在此处下载 - http://www.sqlis.com/post/Trash-Destination-Adapter.aspx)作为目的地,直到您经过足够的测试,知道您要发送到目的地的内容是您要发送的内容。与此相结合,使用数据查看器查看数据流的各个部分的数据。

答案 5 :(得分:1)

对于非常大的包,或者只要有可能,使用非容器容器来帮助包的未来读者轻松地理解包。非容器就像任何其他容器一样,除了它后面没有编程逻辑。它有助于将相关项目组合在一起,以便更容易理解包装。它背后的概念是人类的头脑不能同时收集超过5-6个项目。

答案 6 :(得分:1)

我自己对此的回答,随着时间的推移我将加入。

  1. 使用BIDS助手(http://www.codeplex.com/bidshelper
  2. 请记住,从注册表中读取的包裹转发设置来自HKCU。如果您从SQL代理运行作业,则会产生影响,因为您必须记住这些设置是针对此用户应用的。
  3. 对于大容量的批量数据传输,请确保在目标位置选择“表格或视图 - 快速加载”。
  4. 一般情况下,对于较大的卷,请进一步阅读目标设置,以帮助您调整性能。
  5. 包存储 - MSDB与文件系统 - 除非您打算利用SSIS安全选项,否则使用文件系统几乎总是更好(参见http://pragmaticworks.com/community/blogs/nayanpatel/archive/2008/11/13/what-are-the-advantages-disadvantages-of-storing-ssis-packages-to-msdb-vs-file-system.aspx

答案 7 :(得分:1)

你也可以看一下2005年微软所做的BI Reference Implementation。它叫做Project REAL。它使用了来自Barnes& amp;的实际数据。高贵能够模拟数据仓库的整个生命周期。那里有ETL最佳实践指南。

答案 8 :(得分:1)

看到这篇文章,认为这个家伙已经涵盖了大部分内容。

http://moeens.com/?s=best+practices&x=0&y=0#/2010/12/ssis-best-practices/

答案 9 :(得分:1)

答案 10 :(得分:1)

以下列出了易于实施的performance best practices和一些development best practices