使用C#反向工程SSIS包

时间:2017-04-22 17:54:14

标签: c# sql-server ssis reverse-engineering etl

需要提取sourcedestination的{​​{1}},columnsource个名称。为什么我要这样做是因为我有数以千计的包并打开每个包平均destination列并列出所有必需的信息将花费大量时间并且它不是一次性要求和此任务目前我的组织每两个月手动完成一次。

我正在寻找一些方法来逆向工程,将所有包保存在一个文件夹中,然后浏览每个包并获取信息并将其放入某个电子表格中。

我想在60 to 75打开包并获取感兴趣节点的信息并放入电子表格,这有点麻烦。请建议可以从哪个库开始。

2 个答案:

答案 0 :(得分:2)

SQL server提供程序集来以编程方式操作包。

要进行逆向工程(反序列化dtsx包),您必须通过循环包并以编程方式读取它们,只需按照此详细链接

通过将dtsx作为文本文件读取并解析xml内容,还有另一种(更难的方式,不推荐)来实现这一目标。在下面的问题中查看我的答案以获得一个例子:

提示:

只需在visual studio中打开包即可。转到package explorer标签(control flowdata flow标签附近)您会看到树视图。它将引导您搜索所需组件的方式

enter image description here

答案 1 :(得分:0)

dtsx Microsoft.SqlServer.Dts.Pipeline中的某些属性不符合CLS。

ColumnInformation Class 
Definition

Namespace:
Microsoft.SqlServer.Dts.Pipeline 
Assembly:
Microsoft.SqlServer.PipelineHost.dll
Important
This API is not CLS-compliant.
C++

Copy
public ref class ColumnInformation

否则尝试这个。

只需在记事本++中打开dtsx包即可。查找表名,然后对所有包中的属性名进行相同的搜索(查找所有文件)。我认为,即使您搜索在文本编辑器中打开的dtsx中的列,它也会为您提供一切。它是手动的,但可以使用Regex和c#进行更新。我从未使用过正则表达式。我只做过一次notepad ++和一个包。