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

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

   (一)SSIS包在SQL Server Business Intelligence Development Studio环境中运行正常,通过DTExecUI.exe 运行也正常,可是一旦部署到Sql Server Agent 中,就不能正常运行,如图所示:

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

(在开发环境运行) 

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

(在Sql Server Agent 中运行)

    从图上的错误信息看出,是数据库登录失敗。这就奇怪了,在SQL Server Business Intelligence Development Studio中运行没有问题,而在配置Sql Server Agent Job的过程中,也没有修改过连接配置啊,为什么此时sa 就连接失敗了呢?SSIS 学习(9):包部署常见问题汇总转
SSIS 学习(9):包部署常见问题汇总转
SSIS 学习(9):包部署常见问题汇总转

  (1)我们在SQL Server Business Intelligence Development Studio中,打开解决方案,打开连接管理器,如图所示:

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

  单击[测试连接] ,提示“连接成功”,没有问题啊,纳闷了。

  此路不通,我们换一种方式试试,选择"Windows 身份认证",如图:

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

  单击[测试连接],提示“连接成功”,点击[确定],返回到编辑界面,[生成],再[Deployment],一切正常。

  再切换Sql Server Agent 中,查看Job 的运行历史记录,错误依旧。

  想来想去,不得其解,无奈之下,只好再换一种方法,[启用包配置](配置方法请参见Integration Services 学习(6):包配置),如图:

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

  然后再打开配置文件,修改数据库连接信息。

SSIS 学习(9):包部署常见问题汇总转
SSIS 学习(9):包部署常见问题汇总转
代码
<?xml version="1.0"?>
<DTSConfiguration>
  
<DTSConfigurationHeading>
    
<DTSConfigurationFileInfo />
  
</DTSConfigurationHeading>
  
<Configuration ConfiguredType="Property" Path="\Package.Connections[ApIisLog].Properties[ConnectionString]" ValueType="String">
    
<ConfiguredValue>Data Source=goumh-hgh;Initial Catalog=ApIisLog;Provider=SQLNCLI10.1;uid=sa;pwd=123456;</ConfiguredValue>
  
</Configuration>  
</DTSConfiguration>
SSIS 学习(9):包部署常见问题汇总转

   转机就从这里开始了,回到Sql Server Agent ,查看Job 历史记录,终于如愿以偿,给了一个鲜艳的绿V:成功了。SSIS 学习(9):包部署常见问题汇总转
SSIS 学习(9):包部署常见问题汇总转
SSIS 学习(9):包部署常见问题汇总转

  此时,再回过头去,想一想我们走过的每一步,终于理出一些头绪来:

    在SQL Server Business Intelligence Development Studio中运行与在Sql Server Agent Service 中运行,除了运行方式不同之外(一个手动执行,一个是定时自动执行),还有一点最大的区别,就是运行身份的不一样。

  在 SQL Server Business Intelligence Development Studio中运行,其数据库连接,无论是基于[Windows 身份认证]还是基于[Sql Server 身份认证],它都是基于服务器的当前登录用户而言的,哪怕是基于[Sql Server 身份认证],而且也勾选上了[保存密码],但是这个密码也是保存在当前用户的个人信息里面的,当换了一个用户的时候,它当然就不可见了。

   在Sql Server Agent 中,回顾一下Job 的部署界面,如图:

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

   [运行身份]:Sql Server 代理服务帐户,这个帐户是一个什么帐户啊,我们再到[服务管理器]中去查看一下,如图:

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

   该服务的运行帐户竟然是[网络服务],走到此处,答案也就显而易见了。

  但是,启用了包配置,其数据库连接信息写入了配置文件,无论什么用户在运行包的时候,都是从这个配置文件重新加载属性值,所以它能成功运行。

   知道了问题的原由,解决这个问题的辦法也就多起来了。

  (1)、修改Sql Server Agent Service 的登录帐户为服务器的当前用户。这是最简单的,但不是最好的,可能规范不允许。

  (2)、创建Sql Server Agent 代理帐户(创建方法请参考Integration Services 学习(7):包部署 ),代理帐户的安全凭据也就是服务器的当前用户。

   (二)除了数据库连接的时候,会遇到这样的问题,SSIS中的Web服务任务、FTP任务、发送邮件任务等,只要涉及到需要用户凭据的任务也都会遇到,但是其解决方法,也离不开这三种,当然首选是包配置,它实现简单,扩展性好,维护方便。

  (三)SSIS包启用了包配置,而且一个SSIS包,有多个配置文件(如图),包运行时这些配置文件是如何加载的?

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

  包配置文件的加载是按从上到下的顺序加载的,这个时候就会有两种情况了:

        1、 如果这些配置文件是配置不同的属性,则每一个属性都从对应的配置文件读取属性值就可以了。

        2、 如果有多个配置文件,配置同一个属性,则永远取最后一个配置文件的属性值,无论它正确与否。

        3、 配置文件的格式如下: 

SSIS 学习(9):包部署常见问题汇总转
<?xml version="1.0"?>
<DTSConfiguration>
    
<DTSConfigurationHeading>
        
<DTSConfigurationFileInfo GeneratedBy="gomh-hgh\goumh" GeneratedFromPackageName="Test Transaction1" GeneratedFromPackageID="{175FF39D-86B8-428A-8A2E-F10CEEDA7186}" GeneratedDate="2010/1/27 16:02:31"/>
    
</DTSConfigurationHeading>
    
<Configuration ConfiguredType="Property" Path="\Package.Connections[TestCsdn].Properties[ConnectionString]" ValueType="String">
        
<ConfiguredValue>Data Source=goumh-hgh;User ID=sa;pwd=123456;Initial Catalog=testcsdn;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;Application Name=SSIS-Test Transaction-{854C37DA-EB41-479D-AB3B-95899481C7CA}LocalHost.testcsdn;</ConfiguredValue>
    
</Configuration>
</DTSConfiguration>
SSIS 学习(9):包部署常见问题汇总转

   其实红色背景部分的信息是可以删除的,只是绿色背景部分的信息不变就可以了。

  从这一点我们也可以看出,多个包可以共享同一个配置文件。

  (四)SSIS启用了配置文件,而在DTExecUI.exe 中,又给它添加了一个配置文件(如图),执行的时候,SSIS如何加载配置文件?

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

  这种情况与上面的问题就不一样了:

  1、 如果SSIS包中的配置文件与上图中添加的配置文件,都配置相同的属性,则永远以SSIS包中的配置文件为准,DTExecUI.exe(即上图界面)中添加的配置文件的属性值不生效。以图为证。

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

 

   
  2、 如两个配置文件,配置的属性不一样,则两个配置文件同时生效。
  3、 如果上图中添加了多个配置文件,SSIS包加载的原理同SSIS包有多个配置文件的情况一样,请参考上面的问题。

  (五)DTExecUI.EXE中,还有一个连接管理器(如图),配置文件的配置与连接管理器的配置,又是如何加载的呢?

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

  连接管理器中的连接,缺省状况下每一项前面的CheckBox 为空,后面的连接字符串不可以编辑,如果勾上前面的CheckBox ,连接字符串的值就可以编辑了。
这种情况下,SSIS包加载时的优先顺序为:SSIS包配置文件-->DTExecUI.exe 中添加的配置文件-->DTExecUI.exe连接管理器的属性值。同一个属性值,以SSIS包配置文件为第一优先。

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

更多相关文章
  • 轉SSIS ProtectionLevel  對包中敏感數據的訪問控制
    本文转自:http://technet.microsoft.com/zh-cn/libra
  • CentOS6.6 源码包部署LNMP架构 #配置防火墙,开启80端口,3306端口 vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp
  • 将web项目打成war包部署在tomcat步骤   1.将自己的项目打成war包.   2.将打包好的war到${tomcat.home}/webapps项目下.   3.在${tomcat.hom}/conf目录下打开server.xml文件,找到Host节点,在Host节点下添加:   < ...
  • struts2使用Convention Plugin在weblogic上以war包部署時,找不到Action的解決辦法
    环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运行时提示找不到Action   解决辦法: 1. 检查生成的war包中\WEB-INF\classe
  • 常见问题汇总:1.alt2gxb模块的每个发送端都需要一个高速:通常情况下一定要从FPGA外面引进来,首选是GX:2.如果我一个FPGA里面有多个alt2gxb模:3.gxb模块里面的Calibrationclk:校准内部匹配电阻用:4.用到gxb模块的bank的参考电压是否必须接:gxb用1.5V ...
  • 


    		    使用Windows Installer 程序包部署RemoteApp上的程序
    1.1.1 使用Windows Installer 程序包部署RemoteApp上的程序 步骤: 1. 在FileServer上,以域管理员登录. 2. 点击点击"开始"à"程序"à"管理工具"à"终端服务"à" ...
  • 


    		    CCIE学习(51)—— 路由汇总
    ●路由汇总的目的 路由汇总试图将多条更小的子网路由汇总为单条路由,以提高路由转发的效率. ●路由汇总的相关特性 1)广播的汇总路由的metric置为所包含子网路由的最小metric. 2)路由器不再广播汇总路由所包含的子网路由. 3)如果路由表中没有任何一条汇总路由所包含的子网路由,那么它不会广播该 ...
  • SSIS 学习(4):变量和表达式转
    变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等.现在还有必 要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也脱离不了这个范畴:如何定义一个变量?如何使用变量?变量的使用范围等.但是在ETL的发 展过程中,从以 ...
一周排行
  • 一. NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加.(注:用Component添加无效). 2. Attach an Anc ...
  • 


    		    Django筆記(4) Django的MTV模式
    1.MTV模式 Django 里关注的是模型(Model).模板(Template)和视图 ...
  • Python2 name Python3 nameurllib.urlopen() urllib.request.urlopen()urllib2.urlopen() urllib.request.urlopen() ...
  • 1,in和not in [email protected]:~$ ipython -nobanner In [1]: uname = "Linux #50-Ubuntu SMP Fri Mar 18 1 ...
  • 


    		    十一、Windows 2003 R2 安裝,配置DHCP
    1) DHCP设置 Server01上安装DHCP组件 2) 安装完成后会在C:\WIND
  • private void CreateWAVFile(string text)        {            SaveFileDialog sfd = new SaveFileDialog();      
  • 最近遇到一个问题,需要动态的从xml文件读取一系列图标文件,加载到一个toolbar中,由于使用的是vs2008 with sp1 feature pack,自然想到用CMFCToolbar来做,思路也很简单 1.将 ...
  • 


    		    JAVASE_day_016
    已经是正式开课的第16天了.今天讲的网络编程和GUI 事件监听. 上午的网络编程大概地介绍 ...
  • :new --为一个引用最新的列值;:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ...
  • 刚看了2个文件,都很基础,没花时间,接着看... #ifndef EVACONNECTER_H #define EVACONNECTER_H #include <qobject.h> #include & ...