开篇介绍

前些天自己在整理 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 SSISJoost 和 Visakh16 也都重现了这个问题,也认为这是一个设计上的 Bug。
但是我最后还是自己否定了自己,只能说是疑似 Bug,但是从这个角度来考虑,也确实可能就是 By Design,以下是我的个人观点: 
关于这个问题,我也提给了微软,可以访问  SSIS 2012 ReadOnlyVariables in Script Task doesn't work  来关注微软技术团队最终的确认。
对于这个问题,包括上面两个非常 NB 的 MVP 以及被我挖出来的这个帖子 SSIS Script task 'ReadOnlyVariables'  中的另外两个牛人 MVP ArthurZ 和 Reza 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 博客推荐栏中快速看到这些文章。

转载于:https://www.cnblogs.com/biwork/p/4024157.html

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

  1. 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package

    开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...

  2. 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...

    开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...

  3. 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache...

    开篇介绍 先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持 ...

  4. 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念...

    开篇介绍 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型. 同步与异步 Synchronous and Asynchr ...

  5. 微软BI 之SSIS 系列 - 平面文件格式的区别(Delimited,Fixed width,Ragged Right, Fixed width ...)...

    开篇介绍 SSIS 中处理文件,一般在描述输出平面文件格式的时候通常会出现以下几种选项: Delimited - 默认输出列使用逗号分隔,也可以选择其它的诸如 | ,或者 Tab 等. Fixed W ...

  6. 微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题

    微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题 参考文章: (1)微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题 ...

  7. 微软BI 之SSRS 系列 - 报表邮件订阅中 SMTP 服务器匿名访问与 Windows验证, 以及如何成功订阅报表的实例...

    这篇文章源于在上一篇博文中有园友提出订阅 SSRS 报表时的一个问题,  于是就好好总结了一下,把有关 SSRS 报表订阅的要点和容易出现问题的地方写出来,希望对大家有所帮助! 参看上一篇博文 - S ...

  8. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...

    在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...

  9. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...

    这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...

最新文章

  1. linux生日_代码简介:让我们用25个Linux事实来庆祝Linux的25岁生日。
  2. CHIL-SQL-FIRST() 函数
  3. Tableau实战系列浏览 Tableau 环境(七) -重组工作区
  4. 华为手机楷体字体下载_手机查看3D打印模型图纸,国产软件SView来了
  5. How to Visualize Your Recurrent Neural Network with Attention in Keras
  6. 如何减小电压跟随器输出电阻_机器人如何保护电池的电源管理系统 免受热坏?(附:PDF文档下载)...
  7. 【实战 Ids4】║ 又一个项目迁移完成(MVC)
  8. spring mvc 配置解析之xml
  9. Lucene搜索引擎
  10. Oracle完全手册,Oracle_11g+Oracle Sqldeveloper 安装完全手册(for win 7 64x)
  11. OpenCV 使用光流法检测物体运动
  12. 字符设备驱动笔记——中断方式按键驱动之linux中断处理结构(五)
  13. Windows 7 SP1 语言包下载
  14. 人工智能之产生式系统
  15. windows通过cmd命令行下载FTP中文件的几种方式
  16. UVALive7461 - Separating Pebbles 判断两个凸包相交
  17. 四月Google份额继续上升 微软收购雅虎势在必行
  18. ref改变样式 vue_vue.js对样式的具体操作详解
  19. 免费好用的APP你值得一试
  20. cura同时打印多个东西,cura同时打开多个模型,cura打开多个stl

热门文章

  1. 数字类型的不正确转换漏洞
  2. Linux从零开始(二、基础命令(续三)修改密码)
  3. IDEA overwrite报错、languagelevel设置不生效问题
  4. 黄金票据(Golden Ticket)的原理与实践
  5. python学习之-- redis模块管道/订阅发布
  6. 分享一些优化博客的心得
  7. bzoj3715 [PA2014]Lustra
  8. Synergy 一套键鼠同时控制多台电脑的神器
  9. 防止QQ密码被盗的五个绝招
  10. dubbo调用失败策略_面试官:dubbo负载均衡策略,集群容错策略,动态代理策略有哪些...