1.创建一个Integration Services 项目;
2.新建一个包;
3.拖数据流任务到上面;
4.右击 ->选择编辑 ,到编辑界面,添加ado.net源 和ado.net目标;
5.设置ado.net源的数据访问模式为sql,书写select语句;
6.目标数据库建立连接配置,建立好关联;
7. 控制页面,右击选择添加变量 ,作用域为包名,为string类型
8. 编辑expresss,注意编写的是数据流任务的express,而不是包的表达式。 例如:select * from tableName where id<@id,其中@id为变量名。
9.c#调用代码
Microsoft.SqlServer.Dts.Runtime.Application ac = new Microsoft.SqlServer.Dts.Runtime.Application();
Microsoft.SqlServer.Dts.Runtime.Package pc = ac.LoadPackage(@"...\Package1.dtsx", null, false);
pc.Variables["id"].Value = "20";//注意,一定要是string的20
Microsoft.SqlServer.Dts.Runtime.DTSExecResult ResultStatus
= pc.Execute(null,null,null,null,null);
DateTime Pstarttime = pc.StartTime;
DateTime Pstoptime = pc.StopTime;
if (ResultStatus.Equals(Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success))
{
MessageBox.Show("成功");
}
else
{
MessageBox.Show("失败" + ResultStatus.ToString());
}
添加脚本任务, 添加一个脚本任务,选择中转,选择要转换的列,创建转换后的列,编辑脚本,建立转换之前的和转换之后的关系代码。
添加聚合 ,拖放聚合到设计界面,设置好group by和sum等。
关于数据库连接以及修改的问题:
创建包之前,在数据源中创建好连接,然后设计包的时候连接直接可以选择创建好的连接来使用,不需要为每个包都创建单独的连接,如果要修改包的连接,只要在设计界面中修改就行了,但是如果包的数量很多的话 ,每个包都打开重新设置,比较麻烦,这时候可以使用包配置来快速解决。
包配置方法:
1. 包创建好之后(选择好了数据源), 控制流界面右击->包配置,打开向导,选择xml文件,选择环境变量、数据源中的连接字符串、数据库名、用户名、密码等,完成。
这样包执行的时候就会读取配置文件中的配置数据来执行。
2.如果配置文件已经创建好,下个包只要选择该配置文件即可使用。
3.关于配置包,选择连接属性只需要选择:InitialCatalog、Password、ServerName、UserName即可。
4.如果要修改数据库连接,既要连接到其他数据库,只要修改上面选择的项对应的 <ConfiguredValue>...</ConfiguredValue> 即可,其他的不能修改,否则会报错。