一次SSIS Package的调试经历
SSIS Package的调试有时是一个非常艰难的过程,由于SSIS 编译器给出的错误信息,可能并不完善,需要程序员根据错误信息抽丝拨茧,寻找错误的根源,进而解决问题。
第一部分:SSIS提供的调试工具
1,SSIS Package的 Control Flow 通过醒目的图标显示task的执行情况
在执行package的时候,如果一个Task上显示绿色的勾,表示task执行正常,如果显示的是红色的X,表示task执行异常。
通常SSIS Package调试的第一步就是寻找出错的Task,然后进入该task的data flow中查看报错的component。
在Task上显示错误信息,进入该task,发现Excel Source没有指定connection manager。
2,在package执行时,会出现一个progress显示执行的进度
如果错误,会在Progress中显示错误的信息
3,Data Viewer 查看从上游组件传递的数据
通过 点击蓝色的数据流线,Enable Data Viewer来查看数据。
4,设置breakpoint
选中Task,点击右键,选中Edit Breakpoint来设置断点,进行调试
5,package 事件,可以在事件中写入特殊的代码,当错误出现时,发送runtime的错误信息或将错误信息写入文档,方便程序员捕捉错误信息,提高debug的效率。
6,以上5种都是非常方便的调试工具,当然SSIS提供的辅助调试工具也有很多,各有用途,如果使用得当,将会使debug更有效率。
第二部分:示例
在使用scripte componet的一个package,出现一个错误信息 “object reference not set to an instance of an object”
说明在 scripte componet的C#代码中,并没有将对象设置为一个有效的实例。
DataTable dt; public override void PreExecute()
{
base.PreExecute(); IDTSConnectionManager100 cnManager = Connections.Connection;
SqlConnection cnn = (SqlConnection)cnManager.AcquireConnection(null); SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = "select code,name from [dbo].[tbExcel]";
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = ; dt = new DataTable("dt");
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
}
从PreExecute函数中,可以看出,最有可能的错误原因是 cnManager 并没有获取到Package的Connection Manager
IDTSConnectionManager100 cnManager = Connections.Connection;
查看Script component的connection managers选项卡,已经设置了connection manager,那么错误的原因可能就是Name=Connection的Connection Manager的链接字符串有错误,导致无法连接到DB。
经验证,最终的结果跟推测一样,Connection Manager的链接字符串有错误,无法连接到DB,导致Script component执行失败。
一次SSIS Package的调试经历的更多相关文章
- ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案
原文:ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案 针对 SSIS intergation 项目 > 属性 > Debug >Run64bITRunt ...
- geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表. 一.BUG调试 首先记录一天的BUG调试,简单copy了 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性
开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...
- 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package
开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...
- 最难忘的Bug调试经历
摘要:目前,著名的社区问答网站Quora上出现一个很火的讨论:你调试过最难的Bug是什么?大家纷纷留言,把自己最痛苦的一次调试经验写下来. 相信每位程序员都有过一段不堪回首地Bug调试经历,程序员一听 ...
- SQL Server(SSIS package) call .net DLL
There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...
- SSIS Package to Call Web Service
原文 SSIS Package to Call Web Service SSIS Package to Call Web Service. You can Call WebService from S ...
- Agent Job代理 执行SSIS Package
摘要: 在使用Agent Job时, 运行SSIS包的Run as账号,必须有SSIS中connection manager的连接权限. 如果没有连接权限,可以用创建proxy账号,并确保proxy账 ...
随机推荐
- Linux:-bash: ***: command not found,系统很多命令都用不了
系统:64位RHEL6 突然之间linux很多命令都用不了,均提示没有此命令. 这应该是系统环境变量出现了问题导致的. 出现这种可能性的原因有很多,大多数是因为,安装了新的软件要配置环境变量,但是没有 ...
- 安装 webpack
安装 webpack看好webpack 对自动压缩和文件名自动md5更名,可解决客户端缓存问题.我的安装环境为 centos linux,root用户 1.安装Node及NPM.到NodeJS官网安装 ...
- ecshop数据表说明
ecshop数据表说明 数据库结构说明,以及自己在后台备份不需要备份的表(红色字体是不需要备份的表)备份文件在FTP或者服务器上网站根目录下data\sqldata下 数据库采用mysql,共78张表 ...
- iOS开发-NSOperation与GCD区别
Mac OS X 10.6及iOS4.0之后导入了可以使全体线程更高效运行,并且使并行处理应用更易开发的架构,GCD(Grand Central Dispatch),同时引入的还有Run Loop, ...
- 基于资源的权限系统-API设计
概述 权限系统需要和别的系统集成,因此,良好的API是易用性的保证. 这里只设计一些权限相关的核心 API,关于用户,组织,导入导出之类的后续再逐步补充 API 设计 围绕权限有以下 4 类 API: ...
- Hadoop笔记
教程: Elasticsearch.MongoDB和Hadoop比较: http://blog.csdn.net/hong0220/article/details/47631409
- Windows10 UWP开发 - 响应式设计
Windows10 UWP开发 - 响应式设计 本篇随笔与大家简单讨论一下在开发适配不同分辨率.宽高比的Windows10 Universal App布局时的可行方式与小技巧.经验均从实践中总结, ...
- mvvm的优势
之前在项目中有个功能,是根据数据模型生成页面,然后页面变动之后,再同步到数据模型之中. 当时用的jquery写的,一点一点的控制,整个功能写下来.测试,花了很长时间,而且还担心出bug. 现在用mvv ...
- DeviceOne 让你一见钟情的App快速开发平台
接触 DeviceOne 要从15年11月开始说起了,因项目和产品时间需求接触了快速开发平台,DeviceOne是非常棒的一个平台,双向数据绑定,可以自定义指令,过滤器等等.总之非常好用完全超出了我们 ...
- Wix 安装部署教程(十二) -- 自动更新WXS文件
上一篇分享了一个QuickWIX,用来对比两个工程前后的差异,但是这样还是很繁琐,而且昨天发现有Bug,目录对比有问题.这次改变做法,完全让程序自动去更新WXS文件,然后再用CCNet去自动编译,这样 ...