方式一: 在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包的几种方式的更多相关文章

  1. java打jar包和运行jar包的两种方式

    java打jar包和运行jar包的两种方式更详细的打包方式请参考https://www.cnblogs.com/mq0036/p/8566427.html 一.java类不依赖第三方jar包以简单的一 ...

  2. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    2018年3月19日 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5 ...

  3. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                     优点:输入一行代码立刻返回结果                      缺点:无法永久保存代码 方法二: ...

  4. maven 引入外部jar包的几种方式(转)

    原文链接: maven 引入外部jar包的几种方式 方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud< ...

  5. Maven打jar包的三种方式

    Maven打jar包的三种方式 不包含依赖jar包 该方法打包的jar,不包含依赖的jar包,也没有指定入口类. <build> <plugins> <plugin> ...

  6. 使用Maven运行Java main的3种方式

    使用Maven运行Java main的3种方式 原文  http://blog.csdn.net/qbg19881206/article/details/19850857 主题 Maven maven ...

  7. 转-Pycharm中运行Python代码的几种方式

    转自:Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式 ...

  8. springboot打成jar包和war包的两种方式,并引入第三方jar包!

    springboot打成jar包和war包的两种方式,并引入第三方jar包! 首先把需要引入的第三方jar包引入到本地项目中,在引用的模块下加一个lib文件夹 一.打成jar包 1.修改pom文件里的 ...

  9. 可运行jar包的几种打包/部署方式

    java项目开发中,最终生成的jar,大概可分为二类,一类是一些通用的工具类(不包含main入口方法),另一类是可直接运行的jar包(有main入口方法),下面主要讲的是后者,要让一个jar文件可直接 ...

随机推荐

  1. HDU 2545 树上战争 (并查集+YY)

    题意:给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,lxh和pfz初始时分别站在两个节点上,lxh总是先移动 ,谁当前所在的点被另一个人占据,他就输了比赛,问谁能获胜 比较有意思的 ...

  2. SQLite 创建自增长标识列

    SQLite Autoincrement(自动递增) SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增.我们可以在创建表时在特定的列名称上使用 AUTOINCREM ...

  3. pointers on c (day 1,chapter3)

    第3章 数据 c中,仅有4中基本数据类型——整型.浮点型.指针和聚合类型(如数组和结构等). 整型:字符.短整型和长整型,它们都分为有符号(signed)和无符号(unsigned). short i ...

  4. cetnos 7 ntp服务的安装与配置

    首先需要搭建yum本地仓库 http://www.cnblogs.com/jw35/p/5967677.html   #搭建yum仓库方法 yum install ntp -y        #安装n ...

  5. 解决Winform应用程序中窗体背景闪烁的问题

    本文转载:https://my.oschina.net/Tsybius2014/blog/659742 我的操作系统是Win7,使用的VS版本是VS2012,文中的代码都是C#代码. 这几天遇到一个问 ...

  6. php正则获取html图片标签信息(采集图片)

    php获取html图片标签信息(采集图片),实现图片采集及其他功能,带代码如下: <?php $str="<img src='./a.jpg'/>111111<img ...

  7. *HDU1285 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. node.js中module.export与export的区别。

    对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports ...

  9. linux一些基本命令

    linux查看自己外网ip:curl ifconfig.me 删除目录:rm -rf 目录名 查看版本:rpm -q 版本 修改文件的用户权限:chown kds:kds agent.crontab修 ...

  10. Server-Sent Events(HTML5 服务器发送事件)

    Server-Sent Events简介 Server-Sent Events(SSE)用于网页自动获取服务器上更新的数据,它是一个实时性的机制. 实时性获取数据的解决方案 对于某些需要实时更新的数据 ...