“无法锁定变量”SSIS错误

时间:2010-06-24 06:49:45

标签: sql-server ssis

我为每小时运行的计划SSIS包随机收到错误。最有趣的是,如果我删除检查点文件并再次运行它,它可以正常工作,但错误可能会在将来运行时出现。我不知道为什么会这样。这是完整的错误消息。

  

以用户身份执行:UserNameChanged。 Microsoft(R)SQL Server执行   包实用程序版本10.0.2531.0   适用于64位版权所有(C)Microsoft   公司1984-2005。保留所有权利。
  开始时间:09:21:40错误:2010-06-24   09:21:45.83代码:0xC0014054
  资料来源:保存MaxLSN&提取日期
  描述:无法锁定变量   “User :: UpdateProcessControlQuery”for   读取访问错误0xC0010001“   无法找到变量。这发生了   当试图检索一个   Variables集合中的变量   在执行期间的容器上   包,而变量不是   那里。变量名可能有   改变或变量不存在   已创建。“。结束错误错误:   2010-06-24 09:21:45.84代码:   0xC0024107来源:保存MaxLSN&   提取日期说明:有   任务验证期间出错。   结束错误DTExec:包   执行返回DTSER_FAILURE(1)。   开始时间:09:21:40完成时间:09:21:45   经过:4.875秒。包裹   执行失败。步骤失败了。

除此之外,我还有100多个这样的软件包在一组20个软件包中运行,一小时内有5个组。并且这个“可变锁定”错误在每个循环中至少弹出一次。所以我需要找出根本原因。谁能帮忙......

8 个答案:

答案 0 :(得分:5)

我怀疑这与在并行执行的多个组件中写入的相同变量有关。基本上这将是该变量的竞争条件。

例如,如果组件A和组件B可以并行执行并且都写入给定变量,那么当组件B尝试执行时,组件A可能会写入它(使其不可用)。由于两个作业的开始时间在不同的运行之间会有所不同,因此您可以获得包看起来随机失败的情况。

要解决此问题,您需要添加一个额外的变量,以便它们不被共享,或者强制一个组件在另一个组件开始之前完成(通过依赖项)。

希望这有帮助。

答案 1 :(得分:1)

检查并确保任务编辑器中的连接管理器属性。如果您从其他包中复制任务/连接管理器,那么我们必须确保所有属性都已正确重新定义。

答案 2 :(得分:1)

我遇到了同样的问题。修复哪个对我有用:

根本原因:我创建了变量并在#34;数据流"内部使用了它。保持"行计数"的值。在此之后,我试图在"控制Flow"中使用此变量。 > "脚本任务"。它不起作用,并给了我与发布相同的错误。

修复:我创建了变量并在"脚本任务"中使用。在脚本任务中使用后,我在数据流中分配了行计数值>行数。

我看起来很奇怪,但它有效:)

答案 3 :(得分:0)

似乎包中的序列容器缺少一个变量,可能需要从其他作业或父包中获取。我认为它是变量范围或运行时生成变量值的问题。

感谢 prav

答案 4 :(得分:0)

此错误的另一种变化: 我将一个任务从一个包复制到了另一个包。该任务包含参数映射,但是源变量在新软件包中不可用。这使参数映射无效。

答案 5 :(得分:0)

如果运行版本和内部版本不同,则可能会出现此错误。例如,我在2012服务器上构建了该程序包,然后在2016年运行了该程序,并收到了此错误。

答案 6 :(得分:0)

我也面临着同样的问题,但是现在解决了这个问题。 我在我的包中使用了2个foreachloop和2个文件系统任务,在第一个循环中,我将完全合格的excel值分配给一个变量,而在第二个循环中使用的变量相同,这就是为什么出现此问题的原因。 我为第二个循环创建了另一个变量,并将该变量值分配给第二个文件系统任务。 最初,我在两个文件系统任务中仅使用一个变量作为源,现在创建了2个变量,问题已解决。 请参考sanpshot以查看快照中的详细信息。

enter image description here

enter image description here

enter image description here

答案 7 :(得分:0)

调试时出现相同的错误。最小化视觉工作室,我看到了弹出窗口,后面带有错误消息。单击确定按钮在我的Visual Studio中呈现正确的错误。这是关于缺少列映射的。修复后即可使用。