Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人有什么好的SSIS最佳实践提示和建议吗?_Ssis - Fatal编程技术网

有人有什么好的SSIS最佳实践提示和建议吗?

有人有什么好的SSIS最佳实践提示和建议吗?,ssis,Ssis,我想听听其他开发人员关于SSIS最佳实践、注意事项、陷阱和技巧等方面的提示 我想在我的公司介绍一些。杰米·汤普森的这个博客非常好,它既有最佳实践,又有命名约定:SSIS使用的DT_WSTR(Unicode字符串)数据类型有4000个字符的限制。由于表达式转换为DT_WSTR,因此它们也不能超过4000个字符 如果在设计时超出限制,将出现错误。但是,如果在运行时这样做,您将不会收到任何明显的警告或错误。操作将以静默方式失败,表达式的计算可能不正确 注意:这并不意味着字符串或SSIS变量不能超过40

我想听听其他开发人员关于SSIS最佳实践、注意事项、陷阱和技巧等方面的提示


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

杰米·汤普森的这个博客非常好,它既有最佳实践,又有命名约定:

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

如果在设计时超出限制,将出现错误。但是,如果在运行时这样做,您将不会收到任何明显的警告或错误。操作将以静默方式失败,表达式的计算可能不正确

注意:这并不意味着字符串或SSIS变量不能超过4000个字符。该限制仅适用于表达式和使用DT_WSTR的其他位置。要更好地解释这一点,请参阅:

下面是一个重现该问题的示例:

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


    如果您注意到SSIS逻辑中的奇怪行为,请查看您的表达式,并确保它们在计算时不超过4000个字符。

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


    将SSIS包置于源代码管理中

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

    构建一个标准导入包和一个标准导出包,其中已经包含您通常需要的变量、您通常需要的连接以及您通常使用的错误处理。通过打开一个模板包并以新名称保存,然后根据特定情况进行调整来构建包要比每次从头构建所有内容快得多

    有几件事不是SSIS特有的,如果您向另一家公司发送导出,请确保将文件复制到存档位置以及ftp站点。当有关于何时发送的问题时,这将非常有帮助。在不查看数据是否需要清理之前,切勿从其他源导入数据。一个缺少城市和州的地址是无用的,一封写着“和他的秘书谈谈”的电子邮件也是无用的,不要把这些东西添加到你的数据库中。不要试图添加插入失败的记录。如果数据库中的“名字”是必填字段,而导入文件中的某个记录没有值,请添加默认值(“未知”)或不要尝试插入该记录

    记录错误和处理的步骤。这将大大有助于找出当已经完美运行了六个月的软件包突然失败时哪里出了问题

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


    使用垃圾箱目的地(您可以在此处下载)作为您的目的地,直到您进行了足够的测试,知道您发送到目的地的内容是您打算发送的内容。与此相结合,使用Data Viewer查看数据流各个部分的数据外观。

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

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

    我自己对此的回答,我将随时间添加到其中

  • 使用BIDS帮助程序()
  • 请记住,从注册表读取的包配置设置是从HKCU获取的。如果从SQL代理运行作业,这会产生影响,因为您必须记住这些设置是针对该用户应用的
  • 对于大容量的批量数据传输,请确保在目标上选择“表或视图-快速加载”
  • 通常,对于大容量,请进一步阅读目标上的设置,以帮助您调整性能
  • 包存储—MSDB vs文件系统—除非您打算利用SSIS安全选项,否则使用文件系统几乎总是更好的(请参阅)

  • 你也可以看看微软在2005年做的事情。这叫真实计划。它使用来自Barnes&Noble的真实数据来模拟数据仓库的整个生命周期。那里有一个关于ETL最佳实践的指南。

    看看这篇文章,我想这家伙已经涵盖了大部分内容