"无法锁定变量"SSIS错误

Fai*_*aiz 6 sql-server ssis

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

以用户身份执行:UserNameChanged.Microsoft(R)SQL Server执行包实用程序版本10.0.2531.0(适用于64位版权所有(C)Microsoft Corporation 1984-2005.版权所有.
开始时间:09:21:40错误:2010-06-24 09:21:45.83代码:0xC0014054
来源:保存MaxLSN和提取日期
说明:无法锁定变量"User :: UpdateProcessControlQuery"以进行读取访问,错误为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个组.并且这个"可变锁定"错误在每个循环中至少弹出一次.所以我需要找出根本原因.谁能帮忙......

Ste*_*mer 5

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

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

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

希望这可以帮助.