专注于中国的商业智能

SSIS包的调用方式

编写简单SSIS包光看MSDN应该就问题不大了,最近几天几个朋友来问我SSIS的调用问题,然后想起我当初实现调用SSIS包的问题的时候也走了不少弯路,确实这方面的资料网上很少.下面我总结了一下,大概分为这么三类吧.

1.使用sqserver2005的代理服务来新建作业来执行包任务;

2.使用编程语言来实现包的调用,比如c#或者vb.net等;

3.使用存储过程或者sql语句来调用包;

下面我们一个一个展开讲一下:

1.使用代理服务的方式

我认为这种是调用SSIS包最方便的方式,我的BI项目中基本上都是采用这种方式的.

sqlserver2005安装完毕默认代理服务是禁用的,在"SQL Server Configuration Manager"里面把他给开启;

 

然后在sqlserver对象资源管理器里面找到sqlserver代理

然后新建作业

新建作业步骤,指定所在服务器,选择包以及一些包的配置信息等

 

新建作业计划,指定作业的执行周期

 

还有下面的警报和通知功能也是很有用的功能,这里我就不演示了.

2.使用编程语言调用

这种方式和下面的方式的原理其实也都一样,就是利用dtexec 这个包执行工具来运行包.

行包时,dtexec 可能会返回退出代码。使用该退出代码填充 ERRORLEVEL 变量,然后可以在批处理文件的条件语句或分支逻辑中测试该变量的值。下表列出了 dtexec 实用工具退出时可以设置的值。

0

已成功执行包。

1

包失败。

3

用户取消了包。

4

实用工具找不到请求的包。无法找到包。

5

实用工具无法加载请求的包。无法加载包。

6

实用工具的命令行中有内部语法错误或语义错误。

System.Diagnostics.Process.Start("dtexec.exe","C:\\UpsertData.dtsx");

当然其他参数可以自己指定,关于dtexec的参数请参考MSDN

3.使用存储过程或者sql语句调用包

 可以从 xp_cmdshell 提示符下运行 dtexec。以下示例显示如何运行名为 UpsertData.dtsx 的包并忽略返回代码:

EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'


以下示例显示如何运行相同的包并捕获返回代码:

DECLARE @returncode int
EXEC @returncode = xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'

posted on 2008-12-04 16:44 李梦蛟 阅读(1804) 评论(8)  编辑 收藏 网摘 所属分类: Sqlserver2005 BI

Feedback

#1楼  2008-12-04 17:35 在家创业 [未注册用户]

你好~金融危机~你感觉到危机了吗?

想在家就创业吗?一键搞定全天下。
E科=电子商务+互惠营销+连锁店=简单的投资创业。
了解咨询-创业导师:张先生
(想赚钱、不满足现状、有事业心加)
QQ:78007985 手机:15846003873
详情了解:http://mengge2008.qzone.qq.com/
  回复  引用    

#2楼  2008-12-04 17:46 韦恩卑鄙      

写得挺实在
不过两个命令行实在多少有点orz   回复  引用  查看    

#3楼  2008-12-04 18:34 aspnetx      

后两种我个人不太推荐了呵呵,相对前一种比较简单而且基本能满足你的要求.   回复  引用  查看    

#4楼  2008-12-04 19:41 上不了岸的鱼{ttzhang}      

学习来了   回复  引用  查看    

#5楼  2008-12-04 21:55 -阿培 [未注册用户]

请问楼主,对于第二种方式,使用编程语言来调包的话,那个你指定的那个dtexec.exe,是不是本地一定要有这个程序呢?   回复  引用    

#6楼  2008-12-05 08:37 古训然      

在c#里这样调用也挺简单
pack = app.LoadPackage(path,null);
dts.DTSExecResult result = pack.Execute();
  回复  引用  查看    

#7楼 [楼主] 2008-12-05 10:11 李梦蛟      

@-阿培
谢谢提醒,是的,本地要有这个程序,呵呵,"古训然"的方法也是可行的,但是也需要sqlserver2005的dll才行   回复  引用  查看    

#8楼  2008-12-06 00:31 阳光沙滩海岸线      

只要你要在那服务器上调用SSIS包,就是一定要装那个SQL2005的SSIS服务,不管你是用什么方式调用的……另外,如果出现什么古怪的问题,比如程序无故停止,记得装SQL的SP2……   回复  引用  查看    



标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-12-04 16:48 编辑过
Google站内搜索
找找看



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: