经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但 是临门一脚的技术不过关,进不了球,一切都是白搭。今天我们就来为大家传授临门一脚的技巧:Integration Services 包部署。

  部署对于SSIS包来说,是非常重要的,在实际部署过程中也经常会遇到问题,比如包在开发环境开发完成了,Debug 一切OK,但是一到生成环境就抛锚,运行不起来,不是这里出问题,就是那里出问题;或者当用户登录到Server 上,通过DTExecUI.EXE或者DTExec.exe的方式,运行OK,但是一旦部署到Sql Server Agent 或者Windows 计划任务中,就挂了,运行不起来,而且有些问题,还让人感到莫名其妙,摸不着头脑。这些都是Integration Services 部署这个环节没有处理好,下面我将为大家细细说来,如何处理这些细节,在部署过程中,还要注意哪些问题。
  Sql Server Integration Services 提供了非常简单的部署工具,利用这些工具可以方便地将包文件(*.dtsx)、包配置文件(*.dtsconfig)以及包的其它相关文件,打包成一个安装文件,以利于到其它计算机安装与部署。

   顺便说明一下,在SQL Server Business Intelligence Development Studio开发环境的解决方案资源管理器中,默认情况下,有一个[杂项]文件夹,如果包有一些其它的相关文件,比如自述文件,操作说明等,需要一起打 包,则只要将这些文件添加到此文件夹中,生成打包文件的时候,系统会自动将此文件夹下的文件,整理到打包文件夹中。

   下面我们以前面介绍的IisLog Solution 为例,来详细介绍包部署的完整过程。

  (-)生成安装部署文件。

   在SQL Server Business Intelligence Development Studio的资源管理器中,右击IisLog -->[属性],打开[IisLog 属性页],在左边的[配置属性]树中,选择[部署实用工具],右边就会显示出[部署实用工具]需要配置的属性,如图:

  AllowConfigurationChanges:设定在安装的时候,包配置文件中的属性是否允许修改。True/可修改;False/不可以修改。其安装界面的效果,稍后将会看到。

  CreateDeploymentUtility:决定是否创建安装部署文件。

  DeploymentOutputPath:设定安装部署文件存放的位置。

  按照如图所示设置各属性,点击[确定],返回到主界面。

  在[生成]菜单上,单击[生成IisLog], 就这么简单,安装部署文件就生成了。我们回到上图设置的部署文件路径,就会看到所有生成的部署文件。

  其中,IisLog.SSISDeploymentManifest,就是我们的安装文件了。

  (二) 包部署。

   将上图Deployment 文件夹下的所有文件,Copy 到目标服务器上,双击IisLog.SSISDeploymentManifest,就会弹出包的安装向导,如图:

  SSIS包一般有两种部署方式:部署到文件系统和部署到Sql Server。这两种方式,各有特点。部署到文件系统,操作会更简单,配置修改也比较容易。而部署到Sql Server ,其安全性会更高。在包的执行与调度方面,没有什么差异。

  此例中,我们选择[部署到文件系统][下一步] ,如图:

 

  选择配置文件,下面的列表框,将显示配置文件的所有属性。如果在[IisLog 属性页]界面中,设置AllowConfigurationChanges=true ,则这些属性,在此处就可以修改,否则就不可以在此修改,而只有等安装完成后,再到安装文件夹下,对配置文件进行修改了。

  [下一步],再单击[确定],部署就完成了。

  转到安装文件夹,找到SSIS包文件,双击,就可以出现如图所示的运行界面了。

  默认情况下,点击[执行]就可以运行了。(左边导航栏每一项的配置,网上的介绍已经很多了,Google、Baidu一下,应用尽有,我这里也就不罗嗦了。)

   这种方式,也就是Sql Server Integration Services 提供的一个实用工具“DTExecUI.exe”。除此之外,还用另外一个实用工具“DTExec.exe”,这两个工具,在功能方面完全一样,没有什么 差异,只是前者有UI界面,明确地告诉了你,每一步怎么操作。后者没有UI界面,所有的配置信息,都需要通过命令参数传入,这种方式,比较适合通过 Windows 计划任务、Windows Service、Sql Server Agent 等方式自动执行SSIS包的场景。

  下面我们重点介绍Sql Server Agent执行包的详细过程,这也是Microsoft 推荐的一种调度方式,虽然Sql Server Agent Job 大家已经非常熟悉了,但是SSIS包任务的配置,对于新手来说,可能也不是那么容易。

  首先,打开Sql Server ,新建作业,如图:

  输入名称,其它默认就可以了。

  选择[步骤],点击[新建],如图:(注意,这一步很关键,与其它Job 任务的差异也就在这一步)

  [步骤名称]:随意输入。

  [类型]:选择“Sql Server Integration Services 包”。

  [运行身份]:默认情况下,该下拉列表框中只有一项“Sql Server 代理服务帐户”,选择此项。

  在[常规]选项卡下,

  [包源]:里面有三种选择:Sql Server 、文件系统,SSIS包存储区,这与前面安装部署时的选择有关系。我们选择[文件系统]

  [包]:选择SSIS 包文件。

  [确定],返回到新建作业界面。

  配置计划,这个很简单,与其它Job 任务一样,不再累述。

  到此为止,一个Sql Server Agent Job 就配置完成了,我们终于可以舒口气了。可是没有想到:黎明前是最黑暗的,噩耗也就此开始。

  到达指定时间后,回到Sql Server Agent ,查看Job 运行历史记录,却是“满堂红”啊,如图:

  这是为什么呢?通过DTExecui.exe 能成功运行,而通过Sql Server Agent 就不能运行了?

  其实原因很简单,就是前面配置的[运行身份]的 问题,DTExecui.exe 是以登录当前服务器的用户的身份来运行的,而在sql Server Agent 中,却是以 "Sql Server 代理服务帐户"的身份运行,而SSIS包中,数据库连接的密码,是基于当前机器的登录用户的,当换一个用户的时候,数据库连接字符串中的密码,自然也就不 生效了。所以错误提示,Sa 连接失败。

  面对这种情况,一般有三种解决办法:

  一种是[启用包配置],将数据库连接信息写入配置文件,包无论通过什么用户运行,都会重新加载这个配置文件,问题自然也就解决了。

  第二种是重新配置Sql Agent Service 的登录帐户,缺省情况下,Sql Server Agent Service 的登录帐户为NetWork Service,我们只要把它修改成登录当前机器的用户就可以了。

  第三种解决办法就是添加代理帐户,该代理帐户的安全凭据也指向登录到当前机器的用户。这种方法用的人不多,下面我们详细介绍一下,如何建立代理帐户。

  首先,打开Sql Server Management Studio ,在[安全性]节点下,新建用户凭据,如图:

  [凭据名称]:Admin Acces(随意输入)。

  [标识]:也就是用户标识,选择登录到机器的当前用户就可以了。

  输入[密码][确认密码],单击[确定],就完成安全凭据的建立。

  然后,添加代理帐户。

  在Sql Server Management Studio中,找到[Sql Server 代理]-->[代理]节点,右击-->[新建代理],打开[新建代理帐户]对话框,如图:

  在常规页面:

  [代理名称]:Admin Access proxy(可以随意输入)。

  [凭据名称]:Admin Access。就是前面创建的安全性凭据。

  [对以下子系统有效]:勾选"Sql Server Integration Services ",如果此代理帐户还需要运行其它子系统,则勾选上列表中的对应项就可以了。

  切换到[主体]页面,添加服务器角色,如图:

  点击[添加],添加用户角色,如果只要求运行SSIS包的话,只选择如图两种角色就可以了。

  单击[确定],Sql Server Agent 代理帐户就建立完成了,这时我们再回到Job 部署界面,在[运行身份]下拉列表框中,就多出一项了,如图:

  我们选择刚创建的代理帐户[Admin Access Proxy],点击[确定]。这时再去查看包的运行历史记录,就春意盎然,一遍绿色了。

/***********************************************************************************************
 *【Author】:游子吟
 *【Date】:2013年07月02日
 *【URL】:http://www.cnblogs.com/invinboy/archive/2010/01/28/1657107.html
 *【Notice】:
 *1、本文为原创技术文章,首发博客园个人站点。
 *2、转载和引用请注明作者及出处。
 *3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
 *4、本声明为文章一部分,转载和引用必须包括在原文中。
 ***********************************************************************************************/

SSIS 学习(7):包配置(下)【转】的更多相关文章

  1. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  2. SSIS 包配置

    在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部 ...

  3. SSIS 学习(6):包配置(上)【转】

    Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量.属性,比如:数据库链接.同步文件目录等,我们都 ...

  4. SSIS 学习(9):包部署常见问题汇总【转】

    Integration Services 包在部署过程中,经常会出现这样那样的问题,让人摸不着头脑,很是烦人.下面我就将我在部署过程中,遇到的一些问题整理出来,以供大家参考. (一)SSIS包在SQL ...

  5. SQL Server Integration Services(SSIS) 包配置与部署

    SSIS配置此处的配置方式,主要针对到正式服务器上要修改服务器名,和连接服务器等配置注意:1. 包配置在windows2008上生成后,在windows2003上mysql的配置无法使用,总是报错连接 ...

  6. SSIS 学习(3):数据流任务(下)【转】

    前一篇文章SSIS 学习(2):数据流任务(上), 介绍了如何创建一个简单的ETL包,如何通过一个简单的数据流任务,将一个文本文件的数据导入到数据库中去.这些数据都保持了它原有的本色,一个字符不 多, ...

  7. 实例学习SSIS(三)--使用包配置

    原文:实例学习SSIS(三)--使用包配置 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)- ...

  8. SSIS教程:创建简单的ETL包 -- 5. 添加包部署模型的包配置(Adding Package Configurations for the Package Deployment Model)

    包配置允许您从开发环境的外部设置运行时属性和变量. 配置允许您开发灵活且易于部署和分发的包.Microsoft Integration Services 提供了以下配置类型: XML 配置文件 环境变 ...

  9. [转]在SSIS中,使用“包配置”时的常见错误与解析

    本文转自:http://www.cnblogs.com/invinboy/archive/2008/05/26/1034312.html 在以前的DTS中,在包的开发.测试.发布迁移过程中你必须手动的 ...

随机推荐

  1. URAL 2040 Palindromes and Super Abilities 2 (回文自动机)

    Palindromes and Super Abilities 2 题目链接: http://acm.hust.edu.cn/vjudge/contest/126823#problem/E Descr ...

  2. [iOS基础控件 - 6.10.6] UIApplicationDelegate & 程序启动过程

    A.概念 1.移动app非常容易受到其他的系统.软件事件的干扰,如来电.锁屏 2.app受到干扰的时候,UIApplication会通知delegate,来代理处理干扰事件 3.delegate可以处 ...

  3. CSS 酷站

    http://mikkelbang.com/#!videos

  4. JMS开发(一):基础理论认知

    JMS全称是Java Message Service.其是JavaEE技术规范中的一个重要组成部分,是一种企业消息处理的规范.它的作用就像一个智能交换机,它负责路由分布式应用中各个组件所发出的消息. ...

  5. VS~单步调试DLL

    有时我们从第三方下载DLL库之后,在使用VS进行调试时还是很麻烦的,现在我总结一下,在开发过过程中调试DLL的方法,希望对各位在开发中有帮助. 1 VS下载插件.Net Refector 2 引用你的 ...

  6. CKeditor3.6.2 配置与精简

    一.使用方法: 1.在页面<head>中引入ckeditor核心文件ckeditor.js <script type="text/javascript" src= ...

  7. Mysql,JDBC封装

    1.完成对数据库的表的增删改的操作 2.查询返回单条记录 3.查询返回多行记录 4.可以使用反射机制来封装,查询单条记录 5.反射机制,查询多条记录 package myjdbc; import ja ...

  8. nginx安装-源码编译

    官方文档:http://nginx.org/en/docs/configure.html 参考:http://jingyan.baidu.com/article/e2284b2b45f693e2e61 ...

  9. stl lower_bound upper_bound binary_search equal_range

    自己按照stl实现了一个:   http://www.cplusplus.com/reference/algorithm/binary_search/ 这里有个注释,如何判断两个元素相同: Two e ...

  10. Java网页数据采集器[上篇-数据采集]【转载】

    开篇 作为全球运用最广泛的语言,Java 凭借它的高效性,可移植性(跨平台),代码的健壮性以及强大的可扩展性,深受广大应用程序开发者的喜爱. 作为一门强大的开发语言,正则表达式在其中的应用当然是必不可 ...