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):包配置),如图:
然后再打开配置文件,修改数据库连接信息。
<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、 配置文件的格式如下:
<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包部署常见问题汇总 (转自游子吟)相关推荐
- SQL Server Integration Services 包的开发与部署初探
说到数据库之间的数据同步,我们经常会结合的SQL Server 2000中的DTS和作业功能来实现按时.按条件的数据传输.但是SQL Server 2005 以后,不再支持SQL Server 200 ...
- 系统部署常见问题汇总
系统部署常见问题汇总 文章目录 系统部署常见问题汇总 引用文件路径问题 前端代码兼容IE问题 IE不支持Promise问题 IE浏览器GET请求缓存问题 前端代码混淆问题 npx的使用 IE兼容new ...
- 使用和执行SQL Server Integration Services包的方法
SQL 小号 QL Server 小号 erver Integration 我 ntegration Services) are a part of the Microsoft SQL Server ...
- Go下载第三方包、git下载包:常见问题汇总
1.go get google.golang.org/grpc 提示网络不通,如下图: 解决方法:go get google.golang.org/grpc 解决办法汇总_年少~年的博客-CSDN博客 ...
- FAQ:Docker和K8s部署常见问题汇总(持续更新)
目录 FAQ1:centos 7 Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work 解决办法: FAQ ...
- ETL学习之五:创建新的 Integration Services 项目
在 Microsoft SQL Server 2005 Integration Services (SSIS) 中创建包的第一步就是创建一个 Integration Services 项目.此项目包含 ...
- 单包攻击_SQL Server Integration Services 2016中的单包部署
单包攻击 SQL Server 2016 has some exciting enhancements to SQL Server Integration Services. In this arti ...
- 使用maven下载依赖包及maven常见问题汇总
最近下载了SPRING3.1.4,发现只有SPRING相关的源码,没有其依赖的jar包.SPRING依赖的jar相当多,自己一个一个的下载比较费劲,就仔细阅读了SPRING下载说明,新版本的SPRIN ...
- ETL学习之四:SQL Server Integration Services入门
ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...
最新文章
- 视频编解码学习笔记(一)
- C++之vector容器初学(二)——插入和删除
- pytorch保存和加载模型state_dict
- 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
- 解决:fatal: not a git repository (or any of the parent directories): .git的问题
- 论 静态方法@staticmethod 类方法@classmethod @property属性
- .NET方向高级开发人员面试时应该事先考虑的问题
- 【Linux】Linux Ext2文件系统
- 如何根据图片找到图中的地点
- JavaScript封装拖动滑块验证
- 10本经典励志书籍推荐
- 大于号html语言怎么写,在HTML中使用大于号、小于号、空格等字符
- Pytorch基础知识之pth文件与DataLoader数据加载器
- 微信小程序自定义顶部导航栏
- 微信小程序中层叠轮播图(仿微信朋友圈swiper样式)
- 三角波的傅里叶变换对_《傅里叶光学(一)》 复数、特殊函数和冲激函数
- pip 和 conda 什么区别?
- Python爬虫从入门到精通─第2课 Requests库讲解
- 国内20个最文艺小清新网站,推荐给你
- HTML背景颜色的渐变