(我不是一个足够有权威性的成员,不能在我的帖子中包含屏幕截图-这里是一个共享OneDrive文件夹的链接,其中有一篇带有图像的文章来解释更好的https://1drv.ms/f/s!Ai9bJ2dV87SLg9h5FP84If74hyUK4Q)
我正在尝试记录在SSIS包工作流程中通过执行SQL任务执行后,已插入、更新和删除的特定存储过程。有一个第三方实现的自定义日志记录方法,但它的工作原理是将系统ParentContainer ID与用户任务ID相关联,该ID用作记录此类信息的存储过程的参数。1)我认为这不适用于执行SQL任务;2)我想要一个超出DML函数发生范围的详细程度。
我已经成功地通过设置结果集,使用变量,并通过使用派生列任务的相邻数据流任务来检索变量并将其插入到日志表中,成功地记录了“单行”。
作为我当前工作方法的一个示例:
Exec SQL任务设置
记录的数据流部分的详细信息
我现在遇到执行多个插入的存储过程,因此我需要记录额外的详细信息--超过一行。我在proc中创建了变量来检索这个多插入场景,并在SP中使用联合select来生成以下结果集。
我知道我现在需要使用完整的结果集设置,但是对于这个应用程序,使用什么方法将结果集持久化到另一个步骤(对我来说是一个目的地,以便记录)。在研究中,我了解了如何使用Foreach循环容器,但这似乎可配置为一个变量,该变量需要是值类型对象。我目前在这里有4个变量,无法在Foreach对象的Collection部分进行设置。
我将非常感谢在实现这一点上的任何见解,或者对另一种方法的建议。
首先要感谢大家!
发布于 2017-06-15 18:59:08
您的Foreach SQL任务生成超过1行,您希望使用INSERT_B_BUDGET循环来捕获完整的结果集,对吗?
在常规选项卡中,将ResultSet更改为完整结果集
在Result Set选项卡中,在INSERT_B_BUDGET任务之后,将Logging 1任务移动到容器中,变量名称为LoopObject.
在“集合”选项卡的“枚举器”中,选择“Foreach ADO枚举器”,“ADO对象源变量作为LoopObject,枚举模式”,选择第一个表中的行。
在变量映射中,添加现有的4个变量。
发布于 2017-06-15 18:34:20
您必须设置一个分析器跟踪来跟踪正在执行的proc。您应该按数据库和用户在跟踪上设置筛选器,并使用SQLProfilerTSQL_SPs模板。
https://stackoverflow.com/questions/44574140
复制相似问题