2017-06-15 354 views
0

(我不是赋予足够的成员包括在我的帖子截屏 - 这里是一个共享的OneDrive文件夹中的链接,有图像的文章,以更好地解释https://1drv.ms/f/s!Ai9bJ2dV87SLg9h5FP84If74hyUK4QSSIS记录详细的整个结果集,

我想记录什么特定的存储特效插入,更新和删除后,他们通过执行SQL任务在SSIS包工作流程内执行。有第三方实现的自定义日志记录方法,但它通过将系统ParentContainer ID与用户任务ID相关联,该用户任务ID充当记录此类信息的存储过程的参数。 1)我不认为这将从一个执行SQL任务和2)我想要的细节水平超过DML函数的发生。

我已经成功地记录了“单行”通过建立一个结果集,使用变量,并通过使用派生列任务检索变量并插入到一个日志表相邻的数据流任务。

由于我目前的工作方法的一个例子:

在EXEC SQL任务设置

详细信息,它记录

现在我整个执行多个插入存储过程来的数据流部分,因此我需要记录更多细节 - 不止一行。我在proc中创建了变量来检索这个多重INSERT场景,并且在SP中选择了一个联合会产生以下结果集。

我明白,我现在需要用整个结果集,现在设定值,而这个应用程序是使用什么方法来坚持的结果设置为另一步(对我来说,为了一个目标登录)。在研究中,我了解了如何使用Foreach循环容器,但是这似乎可以配置为一个需要成为值类型对象的变量。我目前有4个变量,无法在Foreach对象的Collection部分设置。

我希望在完全实现这一目标或建议另一种方法任何见解。

非常感谢提前!

+0

我觉得这个问题含糊不清,因此不清楚。当你这样做的时候:“但是我对从那里采取什么方法以及如何记录这个问题感到困惑”,它不再清楚你到底在说什么。你可以编辑你的问题到基本要点,并专注于问题是什么,没有不必要的背景噪音? –

+0

请告知修订是否令人满意 – SuraAnahita

+0

不,我还不知道你想问什么,对不起。 –

回答

0

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

+0

我知道正在执行什么procs,它是通过proc中的变量(例如DECLARE @rows_insert INT等)捕获结果集中的(> 1行)输出的。 – SuraAnahita

1

你INSERT_B_BUDGET SQL任务中生成超过1行,你想用foreach循环赶上整个结果集,是否正确?

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

  2. 编辑INSERT_B_BUDGET任务,

    在常规选项卡

    ,改变结果集,以完整的结果在结果集选项卡中,变量名LoopObject设置

  3. 添加Foreach循环容器INSERT_B_BUDGET任务后,将你的日志1任务到容器中。

    在集合选项卡,枚举

    ,选择FOREACH ADO枚举,ADO对象源变量作为LoopObject,枚举模式,在所述第一表中选择行。

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

+0

这非常有效。它完成了我以前在概念上的理解;我不明白循环对象var是在Exec SQLTask中映射的唯一变量,以及映射到Foreach容器中的其他字段变量。你的指示非常清楚,谢谢。作为应用程序的好奇心,这种方法在记录proc的洞察力中有意义吗?您是否对同一应用程序或其他应用程序使用过这种方法? – SuraAnahita

+0

如果您的SQL任务和日志表位于同一个SQL Server上,则可以直接使用插入,无需SSIS。如果他们不在同一个实例,SSIS将工作。如果能解决您的问题,请将我的答案掩盖为答案。谢谢。 – Wendy

+0

明白了,再次感谢你。我做了,但得到以下消息,我相信因为我还没有归还。 “感谢您的反馈!记录下名声不到15的人的投票,但不要更改公开显示的帖子得分” – SuraAnahita