C#调用SSIS包

spring_sun1 2008-11-16 08:17:30
想用C#为SSIS的包写一个界面调用程序,SSIS包中的所有参数(包括数据库连接,表名称等)都可以用这个界面程序设置。
不知道可行不,做起来负责不,有没有什么好的解决方案。因为想把SSIS包做得尽量通用,设置尽量简单,让不懂SSIS的人也能很快上手。
...全文
344 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
_biscuit 2010-08-17
  • 打赏
  • 举报
回复
使用C#调用SSIS包
下面是示例:

使用带参数的包,首先引入
using Microsoft.SqlServer.Dts.Runtime;
然后在程序中为包变量赋值,具体方法代码:

private void runetl()
{
Console.WriteLine("ETL start...");
string filepath = installedPath + "\\etl\\Package.dtsx";
Microsoft.SqlServer.Dts.Runtime.Application application = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = application.LoadPackage(filepath, null, true);
package.Variables["dbservername"].Value = dwservername;
package.Variables["dbname"].Value = dwdbname;
package.Variables["varFolderName"].Value = thispath;
DTSExecResult result = package.Execute();
if (result.Equals(DTSExecResult.Success))
listBox1.Items.Add("ETL success");
else
{
listBox1.Items.Add("ETL failed");
return;
}
}
todouwang 2009-01-19
  • 打赏
  • 举报
回复
动态映射可以用脚本完成,动态生成映射关系的数据流包
spring_sun1 2008-11-19
  • 打赏
  • 举报
回复
楼上都是不错的方案。但不知能不能做到源与目标的映射也能通过C#写的程序配置。
landilan 2008-11-18
  • 打赏
  • 举报
回复
哈哈,我的做法是,先生成SSIS包xxx.dtsx的xxxbak.dtsConfig,再由C#读取,贴换,另存为SSIS包使用的xxx.dtsConfig。
hery2002 2008-11-17
  • 打赏
  • 举报
回复
1.使用存储过程传递参数,
2.通过DTEXEC命令行适用工具来执行SSIS包即可.
参考:
create proc ssisexec_up
@param1 nvarchar(100)
as
begin
DECLARE @sqlcmd nvarchar(2000)
DECLARE @returncode int
SET @sqlcmd ='dtexec /f "C:\UpsertData.dtsx" /SET \package.variables[myvariable].Value;'+ltrim(@param1)+ ' '
EXEC @returncode = xp_cmdshell @sqlcmd
end
todouwang 2008-11-17
  • 打赏
  • 举报
回复
可行。我们使用脚本控件,以及相关sp完成的通用设计,效果很理想。
dawugui 2008-11-16
  • 打赏
  • 举报
回复
不会,帮顶.
或请版主转到C#版.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧