














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");
以下列表就是通用包任务的通用名称:
l ActiveXScriptTask
l BulkInsertTask
l ExecuteProcessTask
l ExecutePackageTask
l Exec80PackageTask
l FileSystemTask
l FTPTask
l MSMQTask
l PipelineTask
l ScriptTask
l SendMailTask
l SQLTask
l TransferStoredProceduresTask
l TransferLoginsTask
l TransferErrorMessagesTask
l TransferJobsTask
l TransferObjectsTask
l TransferDatabaseTask
l WebServiceTask
l WmiDataReaderTask
l WmiEventWatcherTask
l 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
结束!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。