惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
月光博客
月光博客
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
IT之家
IT之家
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
爱范儿
爱范儿

博客园 - xuanfeng

计算汽车行驶的方向 计算两个GPS坐标的距离 C#串口读取GPS接收仪器的数据 篮牙接收GPS数据格式说明 测试SqlHelp,linq to SQL,Nhibernate批量处理数据的效率 Memcahed分布式缓存服务替换Session解决方案 Session问题小记 分析Memcached客户端如何把缓存数据分布到多个服务器上 Memcached 相关收藏 C# 实现二维数组的排序算法(代码) 面试过的三道与数据结构相关的题目 提供简洁版创建SQL Server 数据集成包辅助类库设计与实现 . NET引用 COM :Microsoft DTS Runtime 1.0 出错,请教解决方法 ADOMD.NET实现多维数据库数据挖掘相关信息查看功能 商业智能方面相关资料收藏 发布一个C#+ADOMD.NET实现查看分析服务数据库信息的类对象 ADOMD。NET查询Analysis Servies中多维数据集 修改存储过程插入自定义的SSIS SQL Server 日志信息 C#编程方式执行包的任务
脱离SSIS强大的可视化编辑功能,后台C#实现包的创建-爽一把
xuanfeng · 2008-08-03 · via 博客园 - xuanfeng
 

i.              目标:

1. 创建一个父包:包含一个执行包任务;两个变量,子包路径变量和提供给子包OLEDB连接器的连接字符串的变量;一个文件类型连接管理器,连接器的连接字符串由变量赋值。

2. 创建一个子包:包含一个执行SQL任务;一个变最,OLEDB连接器连接字符串变量,该变量需要配置成由父包传递;

一个OLEDB类型连接管理器,连接器的连接字符串由变最提供。

3. 根据路径保存包;

ii.              目标具体实现技术分解:

1)       程序集引用

2)       创建包

3)       创建包的变量

4)       创建包任务

5)       创建包连接器

6)       设置属性由表达式生成

7)       设置变量由父包传递(设置包配置)

1)       程序集引用

安装MS SQL 后,SSIS相关程序集基本可以从以下目录得到

"Program Files"Microsoft SQL Server"90"DTS 相关子目录

"Program Files"Microsoft SQL Server"90"SDK"Assemblies 根目录

但也有特殊情况,包含Microsoft.SqlServer.Dts.Tasks.ExecutePackageTask的Microsoft.SqlServer.ExecPackageTaskWrap程序集并不能在"Program Files"Microsoft SQL Server"90"DTS"Task 目录下找到,因为这个程序集入在全集缓存中,引用时,在引用文件路径中输入

%windir%"assembly"GAC_MSIL"Microsoft.SqlServer.ExecPackageTaskWrap"9.0.242.0__89845dcd8080cc91"Microsoft.SqlServer.ExecPackageTaskWrap.dll,按确定即可引用 

2)       创建包

Package 包对象可以直接实例化

示例:

Package package = new Package()

设置包的名称

package.Name = "Parent";

3)       创建包的变量

创建变量需要调用 Package.Variables.Add 方法返回一个变量实例,再进行一些变量属性的设置。

示例:

Variable varConStr = package.Variables.Add("ConStr", false, "Parent", conString);

设置变量的命名空间

varConStr.Namespace = "User";

4)       创建包任务

创建包任务需要调用Package.Executables.Add 返回一个Executable 实例,第二步把Executable转化成TaskHost实例,第三步从TaskHost.InnerObject属性转化为具体的包任务实例

Package.Executables.Add,可以对过使用包任务的通用名称返回Executable实例,也可以通过包的长名称返回Executable实例。

示例:

Executable package= package.Executables.Add("STOCK:ExecutePackageTask");

Executable exec2 = package.Executables.Add("Microsoft.SqlServer.Dts.Tasks.ExecutePackageTask.ExecutePackageTask, Microsoft.SqlServer.ExecutePackageTask, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91");

以下列表就是通用包任务的通用名称:

ActiveXScriptTask

BulkInsertTask

ExecuteProcessTask

ExecutePackageTask

Exec80PackageTask

FileSystemTask

FTPTask

MSMQTask

PipelineTask

ScriptTask

SendMailTask

SQLTask

TransferStoredProceduresTask

TransferLoginsTask

TransferErrorMessagesTask

TransferJobsTask

TransferObjectsTask

TransferDatabaseTask

WebServiceTask

WmiDataReaderTask

WmiEventWatcherTask

XMLTask

示例:

Executable exc = package.Executables.Add("STOCK:ExecutePackageTask");

TaskHost hoskHost = exc as TaskHost

ExecutePackageTask packageTask = hoskHost.InnerObject as ExecutePackageTask;

5)       创建包连接器 

创建包连接器需要调用Package.Connections.Add方法反回连接器实例

下面列常用连接器名称

"OLEDB"

"ODBC"

"ADO"

"ADO.NET:SQL"

"ADO.NET:ODBC"

"FLATFILE"

"FILE"

"MULTIFLATFILE"

"MULTIFILE"

"SQLMOBILE"

"MSOLAP90"

"FTP"

"HTTP"

"MSMQ"

"SMTP"

"WMI"

示例:

ConnectionManager conn = package.Connections.Add("File");

 conn.Name = "Children";

6)       设置属性由表达式生成

设置属性由表达式生成只需要调用SetExpression方法,表达式中访问变量时使用的字符串格式@[变量的唯一标识],变量的唯一标识符可以从变量的Variable.QualifiedName属性中获取。

示例:

Variable varChildrenFilePath = package.Variables.Add("childrenFilePath", false, "Parent", strChild);

varChildrenFilePath.Namespace = "User";

ConnectionManager conn = package.Connections.Add("File");

conn.Name = "Children" ;

conn.SetExpression("ConnectionString", string.Format("@[{0}]",             varChildrenFilePath.QualifiedName));     

7)       设置变量由父包传递(设置包配置)

启用名包配置可以通过Package.EnableConfigurations 属性来设置;创建包配置实例可以调用Package.Configurations.Add方法反回配置实例,设置包配置为父包变量配置需要调用Configuration.ConfigurationTyp;配置目标变量为子包变量,通过Configuration .PackagePath 配置变量的包路径可以通过Variable.GetPackagePath方法获取;配置相应的父包变量通过设置Configuration. ConfigurationString属性的值为父包相应变量的名称。

示例:

package.EnableConfigurations = true;

 string varPackagePath = variable.GetPackagePath();

 Configuration conf = package.Configurations.Add();

 conf.ConfigurationType = conf.ConfigurationType = DTSConfigurationType.ParentVariable;

 conf.PackagePath = varPackagePath

 conf.ConfigurationString = "ConStr"; 

iii.              目标实现类关系图与详细信息 

 

iv.              目标实现代码 

Code

配置文件:

Code

 v.              目标实现测试代码 

Code

结束!