是否有更快的方法在SSIS包中添加列或更改字段?

时间:2015-01-05 21:24:37

标签: sql-server ssis packages

我们有10个稍微不同的SSIS包,可以将数据从一个数据库传输到另一个数据库。每当我们对第一个数据库进行更改时,例如添加新字段或更改所述字段的属性(例如扩展varchar的长度),我们也必须更新包。

这些包中的每一个都有一个包含多个合并连接,排序,条件语句等的长流程。如果需要更改的字段位于流程的开头,我必须完成每个合并并使用新的变化,每次我这样做,需要几分钟的时间来处理,然后我就到了下一个。当我接近结束时,为每个合并连接计算该过程所需的时间越来越长。对10个不同的包进行此操作,即使它们同时完成,仍然需要3个小时。这是耗时且非常单调的。必须有一个更好的方法,对吧?

2 个答案:

答案 0 :(得分:1)

BIML非常适合这一点。 BIML是一种基于XML的技术,可转换为dtsx软件包。 BIMLScript是与c#或vb交叉的BIML,用于提供控制流逻辑,因此您可以根据条件创建多个包/包元素。您可以轻松查询表结构或自定义元数据,这样,如果您只进行数据库到数据库转换,则可以对数据库进行结构更改并重新生成SSIS包,而无需进行任何编辑。

答案 1 :(得分:0)

简短的回答是否定的。 SSIS生成的元数据使得数据源发生变化时非常尴尬。您可以沿着动态生成的软件包的路走下去,但这并不理想。

你的另一个选择是减少伤害。考虑是否可以实现Canonical Data Model模式:

http://www.eaipatterns.com/CanonicalDataModel.html

它可能涉及在接收数据时立即将数据映射到某种内部格式,可能通过临时表或缓存,然后仅使用内部格式。然后在处理结束时映射回输出格式。

虽然这确实会增加程序包的整体复杂性,但这意味着外部数据源的更改只会影响处理开始和结束时的转换,从长远来看,这可能会为您节省大量时间。 / p>