您的位置:首页 > 其它

微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug

2014-10-15 10:15 387 查看

开篇介绍

前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值。我记得以前在 2008 的版本中为了弄明白这个配置,还特意测试过这个细节,获取错误并理解了这个功能。但是现在回去再次测试 2008 的版本时,发现这个功能在 2008 中其实也是错误的,把我印象中的测试结果完全给推翻了,所以到现在已经搞不清楚我当时到底是如果得出这个错误的。

疑似功能 Bug 描述

在 SSIS 包中定义了用户自定义变量 - PV_CURRENT_DATE,并且把它们放置在 ReadOnlyVariables 中,按照我们的通常理解那么这些变量在 Script Task 中应该就是只读性质的,不能赋值给他们。如果需要读写一个变量,那么这个变量就应该放到 ReadWriteVariables 中。



在代码中可以看到 PV_CURRENT_DATE 这个变量被赋值了。



按道理应该报错的,包执行失败的,结果却是执行成功!



那么在 SSIS 2012 中要如何解决或者描述这个问题呢? 测试一下,修改变量 PV_CURRENT_DATE 将它的 ReadOnly 属性修改为 True,标明是只读,这个时候才会出错。



通过断点调试就会发现这个错误的原因就是 : Error trying to write to a read-only variables,试图向只读的变量写值。



唯一能解释的通的就是在 SSIS 2012 中的 ReadOnlyVariables 列表中出现的就只能是 ReadOnly = True 的变量,在 ReadWriteVariables 是可以看到 ReadOnly = False 或者 ReadOnly = True 的所有变量。如果本意是这样的话,我觉得这种设计显得非常的别扭,并且 ReadOnlyVariables 这个很容易给人误导,让人认为是放入其中的变量在 Script Task 中就是只读的!

MSDN 论坛

我把这个问题也贴在了 MSDN 论坛 - Is it a bug - SSIS 2012 ReadOnlyVariables in Script Task doesn't work
回复帖子的两个 MVP SSISJoostVisakh16 也都重现了这个问题,也认为这是一个设计上的 Bug。







但是我最后还是自己否定了自己,只能说是疑似 Bug,但是从这个角度来考虑,也确实可能就是 By Design,以下是我的个人观点:





关于这个问题,我也提给了微软,可以访问 SSIS 2012 ReadOnlyVariables in Script Task doesn't work 来关注微软技术团队最终的确认。



对于这个问题,包括上面两个非常 NB 的 MVP 以及被我挖出来的这个帖子 SSIS Script task 'ReadOnlyVariables' 中的另外两个牛人 MVP ArthurZReza Raad 也同样对这一个特性持有疑似 Bug 的观点。

如果这么多人也都这么认为的话,即使不是 Bug,这个设计也是存在问题和缺陷的,因为着着实实误导了很多人。

PS

MVP Reza Raad 的代表作 《Microsoft SQL Server 2012 Integration Services: An Expert Cookbook》



其它有关 Script Task 脚本任务的文章

微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件

MSDN 论坛的 BI MVP 们

ArthurZ (MVP,MCDBA, MCAD, MCTS and MCITP)

Reza Raad (MVP, MCP, MCTS and MCI《Microsoft SQL Server 2012 Integration Services: An Expert Cookbook》作者)

SSISJoost (MVP, SSIS)

Visakh16 (MVP, SSIS,SSAS,SSRS)

微软已经确认这是一个 Bug

更新自 2014年12月15日,看到微软已经确定了这是一个 Bug,并且从 2008 R2 版本中就存在这个 Bug 的。





更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server) 如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: