SSIS 学习(9):包部署常见问题汇总【转】
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、 配置文件的格式如下:
<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包配置文件为第一优先。
/***********************************************************************************************
*【Author】:游子吟
*【Date】:2013年07月02日
*【URL】:http://www.cnblogs.com/invinboy/archive/2010/02/02/1661459.html
*【Notice】:
*1、本文为原创技术文章,首发博客园个人站点。
*2、转载和引用请注明作者及出处。
*3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
*4、本声明为文章一部分,转载和引用必须包括在原文中。
***********************************************************************************************/
SSIS 学习(9):包部署常见问题汇总【转】的更多相关文章
- MVC 网站部署常见问题汇总
一:TGIShare项目是一个MVC5的网站程序,部署在了IIS上,使用的Windows验证方式,并在本机设置了计划任务定时调用某个地址执行命令.问题汇总如下: 1.Window Server 200 ...
- SSIS 学习(7):包配置(下)【转】
经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但 是临门一脚的技术不过关,进不了球,一切都是白搭.今天我们就来为大 ...
- SSIS包部署
1.ssis包部署可以生成部署文件,部署到sqlserver,再通过sqlserver计划作业来执行. 2.也可以通过shell来调用dtsx ,通过windows计划任务来定时调用exe. 不论是哪 ...
- SSIS 学习(6):包配置(上)【转】
Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量.属性,比如:数据库链接.同步文件目录等,我们都 ...
- SSIS 包部署错误 0xC0010014
SSIS 包部署错误 0xC0010014 Reinhard 在部署 SSIS 包时,提示如下错误. 由于错误 0xC0010014"发生了一个或多个错误.在此消息之前应有更为具体的错误消息 ...
- springboot 学习之路 5(打成war包部署tomcat)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- SSIS教程:创建简单的ETL包 -- 5. 添加包部署模型的包配置(Adding Package Configurations for the Package Deployment Model)
包配置允许您从开发环境的外部设置运行时属性和变量. 配置允许您开发灵活且易于部署和分发的包.Microsoft Integration Services 提供了以下配置类型: XML 配置文件 环境变 ...
- CentOS安装Oracle数据库详细介绍及常见问题汇总
一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命 ...
- SSIS 学习(3):数据流任务(下)【转】
前一篇文章SSIS 学习(2):数据流任务(上), 介绍了如何创建一个简单的ETL包,如何通过一个简单的数据流任务,将一个文本文件的数据导入到数据库中去.这些数据都保持了它原有的本色,一个字符不 多, ...
随机推荐
- 2016-3-25突然推送大量消息的问题及查找 -- Sangit
起因:2016年3月25日 18:30 左右,突然接到客户投诉,说APP收到大量的任务推送消息,而且点击进去都是一些过期任务,我们将对此展开追踪,查找问题原因. 过程: 1.当时的第一反应是先查看re ...
- 快速备份sqlserver2005以上版本数据库的方法-摘自网络
使用优化参数的备份命令 BACKUP DATABASE [test]TO DISK = N'D:\test_FULL_20110311_050001_1.bak',DISK = N'D:\test_F ...
- CentOS上firefox安装flash
CentOS下firefox安装flash说明 CentOS下自带了firefox,但没有flash插件的,按它自己的提示安装不成功,需要手动安装,如下: 1.打开flash官网,http://lab ...
- Nginx的代理和反向代理
什么是代理? 代理是为网络用户代理了来访问网络的,比如Google agent代理FQ. 什么是反向代理? 以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服 ...
- PopupWindow添加动画效果
1.定义PopupWindow弹出与消失的两个动画文件,放在anim文件夹下 popup_enter.xml <?xml version="1.0" encoding=&qu ...
- crontab 获取本机ip
写了个shell获取ip的函数,如下 function GetLocalIP() { ifconfig | grep 'inet '| grep -v '127.0.0.1' | cut -d: -f ...
- POJ 1287 Networking (最小生成树)
Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...
- [iOS基础控件 - 6.11.5] 沙盒 & 数据存储
A.沙盒 每个APP都有一个沙盒,是独立存在的 1.Xcode5和Xcode6的模拟器文件目录 a.模拟器路径改版 (1)Xcode5中模拟器路径为:/Users/用户名/Library/Appl ...
- javascript 工具方法(长期更新)
//密码强度判断,低级:不到八位:中级:八位以上:高级:八位以上并加入了特殊符号. function pwdStrength(pwd) { var pwdLevel; if ((pwd &&a ...
- CPU与内存(经典问答)
原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...