1

我正在尝试为 SQL Server Reporting Services、Analysis Services 和 Integration Services 寻找一些开发最佳实践。

有没有人可以提供一些有用的链接或指导?

4

1 回答 1

2

我只能专门与 SSIS 交谈,尽管其中一些也适用于其他人。

将您的包保存为文件并将它们放在源代码管理中。

在可能的情况下,将变量用于从服务器更改为服务器或运行运行的事物。

使用配置文件保存不同环境的配置。

当处理来自外部来源的数据时,假设它会在没有警告的情况下更改格式(即检查您期望在每一列中的数据是否是您获得的数据!)没有什么比将电子邮件放在姓氏字段中(或发生的那样)对我们来说,曾经在 DTS 中,将社会安全号码输入到表示要向该人支付多少钱的字段中,当然很高兴我们在有人收到该金额之前发现了这一点。)。

我看到的事情包括添加新列、删除对您的流程至关重要的列、重新排列列的顺序(当文件本身没有列名时尤其糟糕)、保持列标题相同但更改数据它们包含(是的,一旦我得到一个文件,其中姓氏数据位于标记为 First_name 的列中,反之亦然),具有与系统中的值不匹配的新值的数据(我想查找类型这里的东西,比如医学专业),奇怪的数据,比如电子邮件字段中的注释,这种格式的名字 lastname - 'Willams, Jo' first_name - 'hn'(结合这两个字段以获得整个名称 - 显然,他们的数据输入人员只是输入了名称,直到他们用完空格并继续在下一个字段中,无论他们在名称中的哪个位置!)。

不要将未清理的数据放入数据库。

始终保留您处理或发送的任何文件的副本。令人惊讶的是,您需要多久进行一次研究。

记录需要清理的错误和日志记录,尤其是当现场问题导致流程失败时。看到表中的错误比知道你的 2000 万条记录文件失败要容易得多,因为一条记录有一个额外的 | 在其中并试图找出它是哪一个。

如果您在 SSIS 中执行大量类似的导入,请创建一个模板项目,其中包含所有标准日志记录和数据清理它。从模板开始并根据您正在使用的新文件调整新映射并对特定于该文件的内容进行细微调整比从头开始重写每个 SSIS 包要快得多。

存储元数据。迟早你会被问到,它多久失败一次,或者在收到文件后多久进行导入,甚至最后一次导入是什么时候。我们所有的包都以在我们的元数据表中存储开始和停止时间的任务开始和结束。所有失败路径都包含一项任务,以在我们的元数据中将导入标记为失败。最终,您可以构建一个系统,该系统知道预期有多少记录,并且如果新文件明显关闭,它就会失败。元数据还可以用于存储诸如记录数量之类的东西,这可以帮助识别他们何时发送了部分文件而不是您期望的整个文件,并防止您吹走他们仍然想要的 300,000 个销售目标。

于 2009-07-30T15:07:04.833 回答