SSIS执行作业报错:调用目标发生了异常

0
先问候大家新年好!
我做了一个IS包,共有A,B,C三个步骤
A:调用SQLSERVER的存储过程,它会刷新一张表
B:是脚本组件,用C#写的代码,取表中内容,创建一个EXL,把内容写进去
C:也是脚本,C#代码,发送邮件给固定的人,把刚才创建并写入数据的EXL作为附件

该IS包可以手动调用,没有错误
但是部署作业之后,执行就会报错,看日志说是在B步骤出现错误:调用的目标发生了异常,然后B任务失败,整个作于失败。

请各位高手指点迷津
呼叫梁勇老师
已邀请:
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-02-25 回答

麻烦你把错误信息贴出来.
你现在在本地没有问题而部署到服务器上有问题,大概有以下几种可能的情况:
  1. 你在服务器的某个目录里没有创建Excel的权限
  2. 你的变量信息没有配置正确,比如你要在哪个目录创建文件
  3. 调用的脚本不存在,或者没有找到
0

tio_huo - 手机18616228050。欢迎各位打我电话指导问题啊 2015-02-27 回答

各位假期快乐!
经过测试我发现只要是操作EXL,并部署作业就会出现这个错误;而不部署作业,在vison studio里运行就不会报错,请各位指点如何避免该问题。
0

tio_huo - 手机18616228050。欢迎各位打我电话指导问题啊 2015-02-27 回答

jxsrzheng。谢谢您关注,截图如下

2015-2-25is包截图.PNG


2015-2-25报错信息.PNG

如上是报错信息,和包的结构,create and full 脚本组件里面写的C#代码用来创建exl,并插入从数据库某张表读出来的数据。

这里没有用到变量,文件位置是指定的,文件名是固定的标题+当天日期,并且该is包可以在visual studio里运行,不会抱任何错误
所以,我觉得问题出在你所说的第一点。
sql server的代理服务权限,我已经尽可能给的最大了,如图:

2015-2-25服务一览.PNG


最上面和最下面的两个服务,右键属性,我给的是 administrator 的账号,系统管理员的,截图如下:

2015-2-25_服务账号.PNG


按照我的理解,这样给的账号权限就足够大了,可运行作业还是会报错

以上,还请您指点看什么地方您觉得可能会导致出问题,我的手机号是 18616228050 霍文龙,如果您觉得帖子上交流比较慢或者说不清,请您打我的手机,或者留个电话我给您打过去。
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-02-27 回答

你试试把那个目录的访问权限指定为EveryOne可访问,试一试
目录不要临时创建
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-02-27 回答

还有就是你可以写日志到某个地方,以记录这个ScriptTask到底是哪里错了。
目前还不好判断,而且你也没法调试。
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-02-27 回答

这是一段我的文件访问代码,用了 Try Catch。
发生错误的时候,我用了 FireError把这个错误抛给SSIS。
这时候你在 SQL Job History里,就能查看到该错误。

1.png
0

tio_huo - 手机18616228050。欢迎各位打我电话指导问题啊 2015-02-28 回答

jxsrzheng,您好!我按照你给的示例,将C#代码中加上try-catch逐块运行,最终定位在保存exl的代码处,如图:


2015-2-28报错代码位置.PNG



当代码运行到这里时会报错,任务失败,之后看job的执行报告,给的错误信息是
错误:异常来自HRESULT 0X80070008


2015-2-28IS包错误描述.PNG




这句话我还是不明白是什么导致了它会报这样的一个错,但是看起来和权限无关了,我之前曾经把放exl的文件夹权限改的宽松了。

对了,我的代码里用的是 Exception,应为用IOException捕获不到错误,依然还是原来的那一句话“调用的目标发生了异常”,所以我用了Exception来catch

不知道您有没有见过这个错误
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-01 回答

点击OnError的查看上下文,看看明细错误信息。
截个图看一下
0

tio_huo - 手机18616228050。欢迎各位打我电话指导问题啊 2015-03-02 回答

jxsrzheng老师,我点了蓝色的查看上下文,以下是详细的上下文截图:
2015-03-02OnError上下文1页.PNG


2015-03-02OnError上下文2页.PNG


2015-03-02OnError上下文3页.PNG


一共3页,顺序就是从上往下的。
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-02 回答

你试试这样做
1) 在IIS想办法:
目前的excel驱动似乎只有32位的
要运行 32 位版本的 ASP.NET 2.0,
1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
2. 键入以下命令启用 32 位模式:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools /Enable32bitAppOnWin64 1
3. 键入以下命令,安装 ASP.NET 2.0(32 位)版本并在 IIS 根目录下安装脚本映射:
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
4. 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607(32 位)的状 态设置为允许。

2) 确保 Excel.Cells 的下标不是从0开始. 否则就会出现异常:HRESULT:0x800A03EC

2个办法每个都试试,因为目前这种直接在服务器上创建Excel的方式其实是不容易控制的。我一般是拷贝一个空的Excel文件到某个位置,然后Open并且编辑它
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-02 回答

这里还有一个跟dll有关系的文章,你看一看。
http://www.cnblogs.com/houzuofeng/p/3370632.html

要回复问题请先登录注册