SSIS包运行的方式总结
来源:互联网 发布:windows主题包怎么用 编辑:程序博客网 时间:2024/05/17 07:01
很多程序员,不止.net程序员都有可能会用到SSIS包来处理一些数据流程上的任务。可以说SSIS作为BI下的一个ETL工具,方便易学,而且功能也确实很强大。于是开发OLTP的同事总会到我们这边寻求技术上的支持,更多的时候会问我,当一个SSIS包开发完成之后,都有哪几种方式可以让它运行起来。一直以来我都想把这个问题总结下来,今天在MSSQLTIPS网站上看老外写了一个现成的总结,于是加上自己的理解,简略的对其进行了翻译,并且加以补充。
如果大家对这篇文章的原文感兴趣,可以参考老外原文地址链接:
http://www.mssqltips.com/sqlservertip/1775/different-ways-to-execute-a-sql-server-ssis-package/
方式一: 在BIDS里直接跑。
这个BIDS指的就是SQL Server Business Intelligence Development Studio,对于.net开发者来说它就是Visual Studio。以下是老外文章中的步骤:
首先,包设计完成之后,右键解决方案浏览器,选择属性。
在包配置界面中,Build旁边的OutputPath选择包被Build之后的存放路径,确认后点击OK结束配置。
然后在解决方案管理器中,右键点击要运行的包,选择Set as StartUp Object。
最后,在解决方案管理器中再次右键要运行的包,选择Execute Package。
以上是老外文章中提到的四个步骤,个人感觉设置Build目录这块有些多余。设置Startup Object,主要考虑到一个项目下如果有很多包的时候,当你点击运行的时候,运行哪一个包。当然我们平时最多的时候还是直接到最后一步,就是直接右键要运行的包然后直接选择运行包。
这种方法是开发和运行SSIS包最基本的方式,尤其是在开发和调试以及测试包运行的时候,比如可以看一个数据流任务中某一个步骤在运行时所传递的数据。
方法二:使用DTEXEC.EXE命令行工具。
DTEXEC.EXE位于SQL Server的安装目录下,通过这个命令可以指定dtsx包文件来运行包或者运行已经部署到SQL Server中的包,比如通过如下命令:
DTEXEC.EXE /F "C:\BulkInsert\BulkInsertTask.dtsx"
这种命令行的方式给批处理以及Powershell 下进行调用就方便了很多。
方法三:使用DTEXECUI.EXE工具。
方法二使用的是命令行工具的方式,这里将要介绍的是带图形界面的方式。
首先,在命令行中输入命令DTEXECUI.EXE。
在弹出的界面中指定想要运行的包就可以了。
其实这个界面就是在SQL Server Management Studio的Intergration Services中执行包一样的界面。
方法四:使用SQL Server作业。
这个方法是执行SSIS包最常见的方法。在Management Studio下连接数据引擎,然后在Agent下找到Jobs建立作业。
借助作业里的Schedule,可以让SSIS包在一个指定的周期里进行运行。
在作业的步骤里,可以指定步骤为SSIS包类型,然后指定SSIS包所在的位置。
方法五:c#调用数据包。
这个是老外原文没有提到的方法,在这里补充上。
这种方法首先需要引入对应的dll组件:Microsoft.SqlServer.DTSRuntimeWrap.dll
然后引入命名空间:using DtsRunTime = Microsoft.SqlServer.Dts.Runtime.Wrapper;
实例化如下对象:
DtsRunTime.Application dtsApplication = new DtsRunTime.Application();
之后,可以调用实例化对象对应的方法来运行包,比如保存在本地的包文件:
DtsRunTime.IDTSPackage90 package = dtsApplication.LoadPackage(@"c:\abc.dtsx", true, null);
或者部署到SSIS里的包:
DtsRunTime.IDTSPackage90 package = dtsApplication.LoadFromSQLServer(PACAAGENAME, SEVERNAME, SQLUSER, SQLPWD, true, null);
最后无论以哪种方式调用的包,都通过如下方法来接收结果:
DtsRunTime.DTSExecResult result = package.Execute();
最后的几点补充:
留意方法四,在任务里调用包的方法可以衍生到方法五里的另外一种实现,比如通过SQL语句来启动一个Job:
EXEC msdb.dbo.sp_start_job N'JOBNAME'
方法五经过在实际测试中,对版本和权限可能会出现各种问题,所以这种方法四的衍生方法相对更容易实现些。
无论以哪一种方式运行SSIS包,都需要SSIS安装在对应的机器上。也就是说,你把开发好的包拿到一台没有安装SSIS机器上想要运行是行不通的。另外就是通过程序调用的方式虽然是需要SSIS的支持,但是SSIS服务没有必要运行。
所以在很多商业智能项目中,通常借助SSIS包来定期从OLTP中向数据仓库中抽取数据,或者数据仓库中其它的数据任务,当然还有园子里的高手提到过的用它来实现监控任务。
- SSIS包运行的方式总结
- 总结运行SSIS包的几种方式
- 总结运行SSIS包的几种方式
- C# 运行已生成的SSIS包
- SSIS包的三种调用方式
- 编程方式创建SSIS包
- 通过编程运行SSIS包:Running SSIS package programmatically
- VS2005运行ssis包(vs2008,sql2008)
- java包的运行方式
- SSIS包
- Sql2005如何用dtexec运行ssis(DTS)包
- Sql2005如何用dtexec运行ssis(DTS)包
- Sql2005如何用dtexec运行ssis(DTS)包
- SQL Server 2005中使用dtexec运行SSIS(DTS)包
- 在运行SSIS包时,如何动态更新变量值
- SQL2005使用SSIS包来做为运行计划。
- SQL2008 建立job, 用代理 运行ssis包
- 在运行SSIS包时,如何动态更新变量值
- 数组的操作
- iOS开发数据库篇—FMDB简单介绍
- Service概要
- 打印 目录下 所有的文件夹跟文件
- Java 多线程知识
- SSIS包运行的方式总结
- os 模块
- [WEB]服务器访问原理与Tomcat服务器安装配置
- 安装NTFS For Mac之后出现错误提醒怎么办?
- 网络技术学习摘要
- mrp实例
- yii2 输出xml格式数据
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
- 攻击状态