Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS 2012-脚本任务赢得';t第二次运行(除非调试)_Ssis_Ssis 2012 - Fatal编程技术网

SSIS 2012-脚本任务赢得';t第二次运行(除非调试)

SSIS 2012-脚本任务赢得';t第二次运行(除非调试),ssis,ssis-2012,Ssis,Ssis 2012,我在SSIS 2012中遇到了一个非常严重的错误。 我只是在SSDT跑步 我有一个脚本任务在一个For…每个块中 第一次到达时,它运行良好 第二次到达时,我在脚本任务中得到一个通用的“由调用错误的对象引发的异常”,归因于脚本 这是一个小脚本,全部位于Main()内,带有Try…Catch块。 我没有击中捕捉,这会添加自定义文本。 它的行为似乎从未进入脚本 除外 如果我真的在其中设置了断点在这种情况下,它运行正常, 不管我是一行一行地走还是直接按F5 我知道这不是很具体,但我希望有人看到了 以前有

我在SSIS 2012中遇到了一个非常严重的错误。 我只是在SSDT跑步

我有一个脚本任务在一个For…每个块中

第一次到达时,它运行良好

第二次到达时,我在脚本任务中得到一个通用的“由调用错误的对象引发的异常”,归因于脚本

这是一个小脚本,全部位于Main()内,带有Try…Catch块。
我没有击中捕捉,这会添加自定义文本。
它的行为似乎从未进入脚本

除外
如果我真的在其中设置了断点在这种情况下,它运行正常
不管我是一行一行地走还是直接按F5

我知道这不是很具体,但我希望有人看到了

以前有人见过这样的东西吗


如前所述,我已经尝试过调试(显然),但没有出现任何错误

我已尝试将变量访问权限从基本更改为通过VariablesDispenser.LockOneForRead,以防变量发生在Main()之前。
我想我得到了循环中使用变量的所有位置,但这没有帮助。

因为这是一个杀手锏,我要继续回答它

它实际上是一个未声明的变量,但在我的Catch块中。
复制粘贴错误:/

我使用了一个变量作为
“Dts.Variables[“TaskName”]”
在Catch块中,但我没有在scripttask窗口中选择它

我不知道为什么它没有给我具体的“集合中找不到”错误。

我以前确实遇到过这种情况,也看到过这种情况/

刚刚遇到了这个问题,很难弄清楚

我定义了一个静态变量(实际上是一个单例类)。显然,SSIS不会在第二次和后续调用时重新初始化程序,而是保存映像并在其入口点重新启动

我的Singelton类(现在我已经验证了几个静态变量)没有重新初始化。它仍然存在。问题在于,它是使用第一次调用脚本时存在的Dts变量集创建的。因为它的“self”值不是null,所以它从未重新实例化

当我意识到发生了什么时,修复起来当然很容易,但是人们已经习惯了一个独立的环境,在这个环境中,每个程序实例的静态值都为null或设置为静态初始值。我们自动地假设程序的新“运行”同样会使其全局空间“干净”。。。。事实上,我相当肯定这就是我在C#“契约”中读到的,我永远不需要担心变量存储空间中的历史积垢

事实证明,这份“合同”和微软让你签署的任何合同一样好

事实上,这是喜忧参半。知道它发生了,我可以使用它来节省在循环中调用的脚本的大量开销。。。但是,由于它不是很好,或者可能没有文档记录,如果在将来的版本中证明它不是真的,我需要小心地进行变通和默认加载测试

(请温和地批评……我对SSIS不熟悉。对程序范例并不陌生。CICS大型机程序将重新初始化全局空间,除非您在链接中做了一些事情以表明它不会……如果您要重新发明轮子,至少看看旧轮子)

--TWZ