代码之家  ›  专栏  ›  技术社区  ›  Mike D.

将项目部署到目录后,SSIS用户变量未更新

  •  2
  • Mike D.  · 技术社区  · 7 年前

    我有一个控制流,用于设置带有执行SQL任务的用户变量。在Visual Studio中一切都很好,但一旦我将其部署到SSIS目录中,变量似乎就不会被分配。我正在对完全相同的数据源执行它。

    SSIS control flow with annotations

    序列容器中的第一个任务从状态表中读取为该表记录的最后一个LSN。如果该表没有条目,则它遵循路径 1. 在上图中。

    在步骤 2. 它使用源数据库上的CDC函数读取表的最小LSN。然后,它将LSN和该LSN的日期时间存储在两个用户变量中。这是数据复制的“窗口开始”。

    从目标表中读取最大更改日期。

    4. 如果窗口开始时间早于最新更改日期,则会发生分支,因为这将导致将重复数据导入目标表。(只需说,有一些原因我无法在加载到目标表之前进行重复数据消除…)


    一旦我将项目部署到SSIS目录,它将执行步骤4并记录错误行。它似乎没有设置变量,或者约束表达式没有使用正确的值。我已经尝试使用结果集设置变量,并将其作为执行SQL任务中的输出参数。我可以从日志消息中看到,源表中的最大更改日期是正确的。

    它在Visual Studio中按预期运行,但在服务器上有不同的行为,这让我非常困惑。我想不出是什么导致了这种情况。

    这些包是使用BIML创建的,但我认为这实际上没有任何联系。完整的解决方案复制了100多个表,每个表一个包。即使我尝试仅对单个包进行调试部署,问题仍然存在。

    1 回复  |  直到 7 年前
        1
  •  0
  •   billinkc    7 年前

    验证运行SSIS的帐户是否具有查询源表的权限。SSIS并不总是以您预期的方式出现权限不足的错误。

    我最喜欢的是一个Foreach文件循环,它总是返回一个空文件列表,并带有一个“找不到路径”的小警告

    我猜从CDC函数中读取LSN有细微差别

    推荐文章