【问题标题】:SSIS Logging detail from SP with Full Result Set来自带有完整结果集的 SP 的 SSIS 日志记录详细信息
【发布时间】:2017-06-15 18:06:57
【问题描述】:

(我不是足够的成员,无法在我的帖子中包含屏幕截图 - 这是一个共享 OneDrive 文件夹的链接,其中包含带有图像的文章可以更好地解释https://1drv.ms/f/s!Ai9bJ2dV87SLg9h5FP84If74hyUK4Q

我正在尝试记录在 SSIS 包工作流中通过执行 SQL 任务执行后插入、更新和删除的特定存储过程。有一个第三方实现的自定义日志记录方法,但它通过将系统 ParentContainer ID 与用户任务 ID 相关联来工作,该用户任务 ID 作为记录此类信息的存储过程的参数。 1) 我认为这不适用于执行 SQL 任务,并且 2) 我想要一个超出 DML 函数发生的细节级别。

通过设置结果集、使用变量以及通过相邻的数据流任务使用派生列任务检索变量并插入日志表,我成功地记录了“单行”。

以我目前的工作方式为例:

Exec SQL 任务设置

记录的数据流部分的详细信息

我现在遇到了执行多次插入的存储过程,因此我需要记录额外的详细信息 - 不止一行。我在 proc 中创建了变量来检索这个多重 INSERT 场景,并在 SP 中有一个联合选择,产生以下结果集。

我知道我现在需要使用完整结果集设置,但是对于这个应用程序,使用什么方法将结果集保存到另一个步骤(对我来说是一个目的地以便记录)。在研究中,我了解如何使用 Foreach 循环容器,但这似乎可以配置为一个需要为值类型对象的变量。我目前在这里有 4 个变量,无法在 Foreach 对象的 Collection 部分中进行设置。

我将不胜感激任何实现这一目标的见解或对另一种方法的建议。

非常感谢!

【问题讨论】:

  • 我觉得这个问题模棱两可,因此不清楚。当你得到这个时:“但我对从那里采取什么方法以及如何记录这个感到困惑”,你已经不再清楚你在说什么了。你能把你的问题编辑成只提要领,并在没有不必要的背景噪音的情况下专注于问题的本质吗?
  • 修改是否满意请告知
  • 不,我仍然不知道你想问什么,抱歉。
  • 不知道?真的吗?无论如何,谢谢。

标签: sql-server ssis


【解决方案1】:

您的 INSERT_B_BUDGET SQL 任务生成多于 1 行,您想使用 Foreach 循环来捕获完整的结果集,对吗?

  1. 创建一个变量,LoopObject,数据类型为Object。

  2. 编辑 INSERT_B_BUDGET 任务,

    在常规选项卡中,将结果集更改为完整结果集

    在结果集选项卡中,变量名称为 LoopObject。

  3. 在 INSERT_B_BUDGET 任务之后添加 Foreach 循环容器,将 Logging 1 任务移到容器中。

    在Collection选项卡,Enumerator中,选择Foreach ADO Enumerator,ADO对象源变量为LoopObject,枚举模式,选择第一个表中的Rows。

    在变量映射中,添加您现有的 4 个变量。

【讨论】:

  • 这非常有效。它完成了我之前对概念的理解;我不明白循环对象 var 是唯一要在 Exec SQLTask 中映射的 var 以及在 Foreach 容器中映射的其他字段变量。你的指示很清楚,谢谢。作为一个应用程序的好奇心,这种方法在记录来自 procs 的洞察力时有意义吗?您是否对同一个应用程序或其他应用程序使用过这种方法?
  • 如果你的SQL任务和日志表在同一个SQL Server上,可以直接使用insert,不需要SSIS。如果它们不在同一个实例上,SSIS 将起作用。如果它解决了您的问题,请将我的回答掩盖为已回答。谢谢。
  • 知道了,再次感谢。我做到了,但我相信以下消息,因为我还没有归属。 “感谢您的反馈!声望低于 15 人的投票将被记录,但不要更改公开显示的帖子得分”
【解决方案2】:

您必须设置探查器跟踪以跟踪正在执行的过程。您应该按数据库和用户在跟踪上设置过滤器,并使用 SQLProfilerTSQL_SPs 模板。

【讨论】:

  • 我知道正在执行什么 procs,它的问题是通过 proc 中的变量(例如 DECLARE @rows_insert INT 等)在结果集中捕获(> 1 行)输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多