SSIS 2012-脚本任务赢得';t第二次运行(除非调试)
我在SSIS 2012中遇到了一个非常严重的错误。 我只是在SSDT跑步 我有一个脚本任务在一个For…每个块中 第一次到达时,它运行良好 第二次到达时,我在脚本任务中得到一个通用的“由调用错误的对象引发的异常”,归因于脚本 这是一个小脚本,全部位于Main()内,带有Try…Catch块。SSIS 2012-脚本任务赢得';t第二次运行(除非调试),ssis,ssis-2012,Ssis,Ssis 2012,我在SSIS 2012中遇到了一个非常严重的错误。 我只是在SSDT跑步 我有一个脚本任务在一个For…每个块中 第一次到达时,它运行良好 第二次到达时,我在脚本任务中得到一个通用的“由调用错误的对象引发的异常”,归因于脚本 这是一个小脚本,全部位于Main()内,带有Try…Catch块。 我没有击中捕捉,这会添加自定义文本。 它的行为似乎从未进入脚本 除外 如果我真的在其中设置了断点在这种情况下,它运行正常, 不管我是一行一行地走还是直接按F5 我知道这不是很具体,但我希望有人看到了 以前有
我没有击中捕捉,这会添加自定义文本。
它的行为似乎从未进入脚本 除外
如果我真的在其中设置了断点在这种情况下,它运行正常,
不管我是一行一行地走还是直接按F5 我知道这不是很具体,但我希望有人看到了 以前有人见过这样的东西吗
如前所述,我已经尝试过调试(显然),但没有出现任何错误 我已尝试将变量访问权限从基本更改为通过VariablesDispenser.LockOneForRead,以防变量发生在Main()之前。
我想我得到了循环中使用变量的所有位置,但这没有帮助。因为这是一个杀手锏,我要继续回答它 它实际上是一个未声明的变量,但在我的Catch块中。
复制粘贴错误:/ 我使用了一个变量作为
“Dts.Variables[“TaskName”]”
在Catch块中,但我没有在scripttask窗口中选择它 我不知道为什么它没有给我具体的“集合中找不到”错误。
我以前确实遇到过这种情况,也看到过这种情况/ 刚刚遇到了这个问题,很难弄清楚 我定义了一个静态变量(实际上是一个单例类)。显然,SSIS不会在第二次和后续调用时重新初始化程序,而是保存映像并在其入口点重新启动 我的Singelton类(现在我已经验证了几个静态变量)没有重新初始化。它仍然存在。问题在于,它是使用第一次调用脚本时存在的Dts变量集创建的。因为它的“self”值不是null,所以它从未重新实例化 当我意识到发生了什么时,修复起来当然很容易,但是人们已经习惯了一个独立的环境,在这个环境中,每个程序实例的静态值都为null或设置为静态初始值。我们自动地假设程序的新“运行”同样会使其全局空间“干净”。。。。事实上,我相当肯定这就是我在C#“契约”中读到的,我永远不需要担心变量存储空间中的历史积垢 事实证明,这份“合同”和微软让你签署的任何合同一样好 事实上,这是喜忧参半。知道它发生了,我可以使用它来节省在循环中调用的脚本的大量开销。。。但是,由于它不是很好,或者可能没有文档记录,如果在将来的版本中证明它不是真的,我需要小心地进行变通和默认加载测试 (请温和地批评……我对SSIS不熟悉。对程序范例并不陌生。CICS大型机程序将重新初始化全局空间,除非您在链接中做了一些事情以表明它不会……如果您要重新发明轮子,至少看看旧轮子) --TWZ