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

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

(在开发环境运行)

(在Sql Server Agent 中运行)

  从图上的错误信息看出,是数据库登录失败。这就奇怪了,在SQL Server Business Intelligence Development Studio中运行没有问题,而在配置Sql Server Agent Job的过程中,也没有修改过连接配置啊,为什么此时sa 就连接失败了呢?

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

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

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

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

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

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

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

代码

<?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>

  转机就从这里开始了,回到Sql Server Agent ,查看Job 历史记录,终于如愿以偿,给了一个鲜艳的绿V:成功了。

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

   在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 的部署界面,如图:

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

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

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

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

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

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

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

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

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

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

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

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

<?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启用了配置文件,而在DTExecUI.exe 中,又给它添加了一个配置文件(如图),执行的时候,SSIS如何加载配置文件?

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

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

 

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

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

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

Integration Services包部署常见问题汇总 (转自游子吟)相关推荐

  1. SQL Server Integration Services 包的开发与部署初探

    说到数据库之间的数据同步,我们经常会结合的SQL Server 2000中的DTS和作业功能来实现按时.按条件的数据传输.但是SQL Server 2005 以后,不再支持SQL Server 200 ...

  2. 系统部署常见问题汇总

    系统部署常见问题汇总 文章目录 系统部署常见问题汇总 引用文件路径问题 前端代码兼容IE问题 IE不支持Promise问题 IE浏览器GET请求缓存问题 前端代码混淆问题 npx的使用 IE兼容new ...

  3. 使用和执行SQL Server Integration Services包的方法

    SQL 小号 QL Server 小号 erver Integration 我 ntegration Services) are a part of the Microsoft SQL Server ...

  4. Go下载第三方包、git下载包:常见问题汇总

    1.go get google.golang.org/grpc 提示网络不通,如下图: 解决方法:go get google.golang.org/grpc 解决办法汇总_年少~年的博客-CSDN博客 ...

  5. FAQ:Docker和K8s部署常见问题汇总(持续更新)

    目录 FAQ1:centos 7 Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work 解决办法: FAQ ...

  6. ETL学习之五:创建新的 Integration Services 项目

    在 Microsoft SQL Server 2005 Integration Services (SSIS) 中创建包的第一步就是创建一个 Integration Services 项目.此项目包含 ...

  7. 单包攻击_SQL Server Integration Services 2016中的单包部署

    单包攻击 SQL Server 2016 has some exciting enhancements to SQL Server Integration Services. In this arti ...

  8. 使用maven下载依赖包及maven常见问题汇总

    最近下载了SPRING3.1.4,发现只有SPRING相关的源码,没有其依赖的jar包.SPRING依赖的jar相当多,自己一个一个的下载比较费劲,就仔细阅读了SPRING下载说明,新版本的SPRIN ...

  9. ETL学习之四:SQL Server Integration Services入门

    ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...

最新文章

  1. 视频编解码学习笔记(一)
  2. C++之vector容器初学(二)——插入和删除
  3. pytorch保存和加载模型state_dict
  4. 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
  5. 解决:fatal: not a git repository (or any of the parent directories): .git的问题
  6. 论 静态方法@staticmethod 类方法@classmethod @property属性
  7. .NET方向高级开发人员面试时应该事先考虑的问题
  8. 【Linux】Linux Ext2文件系统
  9. 如何根据图片找到图中的地点
  10. JavaScript封装拖动滑块验证
  11. 10本经典励志书籍推荐
  12. 大于号html语言怎么写,在HTML中使用大于号、小于号、空格等字符
  13. Pytorch基础知识之pth文件与DataLoader数据加载器
  14. 微信小程序自定义顶部导航栏
  15. 微信小程序中层叠轮播图(仿微信朋友圈swiper样式)
  16. 三角波的傅里叶变换对_《傅里叶光学(一)》 复数、特殊函数和冲激函数
  17. pip 和 conda 什么区别?
  18. Python爬虫从入门到精通─第2课 Requests库讲解
  19. 国内20个最文艺小清新网站,推荐给你
  20. HTML背景颜色的渐变

热门文章

  1. Python学习总结之四 -- 这就是Python的字典
  2. 最适合新手的手动搭建wamp环境教程
  3. python判断某年是否为闰年的程序_Python 学习--从0到1(4. 题3)
  4. hosts文件 端口_在Linux系统中使用Vim读写远程文件
  5. 北京玉渊潭开启春节模式 五大版块吸引游客
  6. HTML学习二_HTML常用的行级标签,常用实体字符及表单标签
  7. UVa10054 The Necklace 欧拉回路
  8. 第 9 章 代码审查制度
  9. while/for 嵌套expect 批量免密码传文件
  10. 在vue-cli项目中使用微信sdk的解决方案