旋风

Communication comes from our hears and heads! my msn:youpeizun@hotmail.com


导航

 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

               

结束!