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"'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述