【问题标题】:Duplicate log entries due to nested containers由于嵌套容器导致重复的日志条目
【发布时间】:2012-12-28 10:19:26
【问题描述】:

由于组件嵌套在其他组件中(例如容器和数据流),因此您拥有一个组件并多次获得相同的日志消息的任何简单方法都可以解决

p>

我找到了this,MS 说它不会对此做任何事情,但它是从 2007 年开始的。 我真的不想做建议的解决方法,看起来工作量很大。

【问题讨论】:

  • 查看与您类似的问题的答案:stackoverflow.com/q/2560452/236348
  • @WilliamToddSalzman 我认为 Diego 的目标是让本机/开箱即用的日志记录行为与您的自定义事件处理程序检查(+1 btw)非常相似,而无需通过并在所有内容上设置 Propagate 属性。
  • 投票重新开放。重复的问题适用于使用 SSIS 事件执行操作以及如何将其限制为仅一种用途。 这个 问题是关于如何使用本机日志记录功能来引发相同的行为。如果 OP 在各种事件处理程序中使用 Execute SQL Task 来执行日志记录,那将是重复的。事实并非如此,我认为这个问题已经错误地结束了。
  • 第二次@Billinkc 重新打开。在仔细阅读了这个问题之后,Bill 是对的,我的候选副本正在使用事件处理程序,而 Diego 只是使用日志记录。

标签: sql-server sql-server-2008 ssis sql-server-2008-r2


【解决方案1】:

对于日志记录,如果您选择登录到 sql server,SSIS 将创建一个存储过程 (SQL 2005)

过程名称:dbo.sp_dts_addlogentry

表名:dbo.sysdtslog90(用户表)

(SQL 2008)

过程名称:dbo.sp_ssis_addlogentry

表名:dbo.sysssislog(系统表)

您可以随意修改它以过滤掉日志条目(如果缺少它,sql 将重新创建它,但不会覆盖同名的自写版本。)

系统生成的版本只是SSIS发送到proc的参数的插入。

您可以添加逻辑以沿着 executionid 的链向上查找父对象并禁止对已记录的条目进行记录(为此,您需要在代码中处理 OnError 事件名称)我通常传递 OnPreExecute、OnPostExecute 、 OnError 和 OnTaskFailed 事件到我的日志记录过程中。默认情况下,proc 还获取 PackageStart 和 PackageEnd 事件。

话虽如此,我让所有这些都完全记录到 sql 中的表中,然后使用摘要和详细报告来检查日志记录并查看错误。我的报告过滤器只显示每次出现的一个错误,而不是过滤日志文件的输入。我还将我的所有 SSIS 包记录到单个数据库中,用于每个 SSIS 包中包含的配置和日志记录。

【讨论】:

  • 感谢程序的信息。不知道那个。不要认为我可以在 proc 上做任何事情,因为它每行调用一次,所以我实际上无法检查重复项。唯一的解决方案是按组件的 ID 过滤,但我不喜欢这样。会变得非常混乱。我想我会像你一样在报道中处理它。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-07-25
  • 2020-03-09
  • 2013-08-31
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
相关资源
最近更新 更多