如何在SSIS中进行元编程

如何在SSIS中进行元编程,ssis,Ssis,在很长一段时间后进行SSIS 我有几个包,每个包都特定于一个表,它们(大多数)都在从一个源进行标准ETL提取,转换并加载到不同的源中 如何将其转换为一个包并提供表名(源和目标)作为输入参数?您不能直接使用。数据流的工作方式是紧密绑定到源数据的模式。列名和数据类型不能更改。通过预先知道单行的最大宽度,SSIS执行引擎可以为rowwidth*BufferRowSize预先分配内存,并知道所有数据都将适合该地址空间,并且可以对所有数据进行内存内修改 磁盘上的实际包必须绑定到源数据形状。但是,这并不意味

在很长一段时间后进行SSIS

我有几个包,每个包都特定于一个表,它们(大多数)都在从一个源进行标准ETL提取,转换并加载到不同的源中


如何将其转换为一个包并提供表名(源和目标)作为输入参数?

您不能直接使用。数据流的工作方式是紧密绑定到源数据的模式。列名和数据类型不能更改。通过预先知道单行的最大宽度,SSIS执行引擎可以为rowwidth*BufferRowSize预先分配内存,并知道所有数据都将适合该地址空间,并且可以对所有数据进行内存内修改

磁盘上的实际包必须绑定到源数据形状。但是,这并不意味着您需要实际构建所有这些包。我没有,我做了一点SSI

如果您有.NET的想法,您可以使用基本API,也可以尝试使用,但这比我通常想做的工作要多

相反,我使用。考虑使用平面文件源的截断和重新加载模式。它看起来像什么?至少有一个执行SQL任务、一个数据流和两个连接管理器(源和目标)。很好,所以构建一次并称之为V1。然后,您将了解当您使用不同的源文件和/或目标文件时会发生什么变化,这是V2的基础。这仍然是一种手动方法,但是现在您知道了,当我需要一个新的源和目标时,我对这个文件进行了N次更改,然后单击按钮,就会得到一个包


一旦您感觉到需要更改什么以满足您的设计模式,那么就可以自动完成设计模式的更改。Biml非常棒,因为它允许您使用脚本,就像我们对经典ASP。免费版本bidshelper的脚本编写体验非常糟糕,但付费工具Mist的脚本编写体验非常流畅。例如,看看我的帖子。我的目标biml文件接受一个模式和表参数,这足以让我生成一个包,将所有数据从源连接复制到目标。这是一个简单的例子。has有一个很好的模式,其中她的目标有12个参数,这些参数涵盖了事实负载所需的一切。她将所需的所有元数据收集到一个表中,并生成所有SSI以解决数据仓库负载问题。考虑一下,您将所需的专业知识从了解SSI转移到收集有关问题的正确元数据。您发现截断和重新加载是不合适的,但是您需要一个增量加载模式,这没有问题。您调用不同的Biml文件,最好使用相同的参数,然后生成一个包,该包以不同的方式解决相同的业务问题。

太棒了!谢谢你的指导。我是SSIS新手,但长期以来一直是一名开发人员(ruby开发人员不是.Net)。我将开始深入研究您推荐的工具。您知道BIML是否具有SSIS组件提供的所有功能,包括查找、记录、转换数据类型、foreach循环、序列容器、事件处理程序等。相关问题,您是否建议将BIML用于所有这些操作?您在SSIS设计器中执行的任何操作,你可以用Biml。查看我提到的Biml提供的答案,然后问问自己如何使它们成为元数据驱动的。我已经手工构建了包,使用SSIS库,使用EzAPI包装器,现在我使用的是Biml。对我来说,在我使用Biml的近两年中,使用Biml为我节省了数周的开发时间。如果X技术在解决商业智能问题方面比Biml更有效,我将加入这股潮流。但在那之前,你会从我那汗流浃背的手上撬开我的Biml