【问题标题】:SSIS Custom Logging Best PracticeSSIS 自定义日志记录最佳实践
【发布时间】:2013-12-27 00:53:09
【问题描述】:

我想知道实现执行 SQL 任务日志记录的最佳方式是什么。例如,对于我的每个执行 SQL 任务组件,我想记录以下内容:

1) SQL 任务的描述。 2) SQL 任务中使用的 SQL 语句。 3) SQL 语句的结果。 SQL 语句返回一个标量值。 4) SSIS 正在创建的作业运行 ID,即 SSIS 创建的 Operation_Id。

目前,这就是我正在实施的方式,这是非常重复的。

1) 对于每个执行 SQL 任务(我们称之为 mySQLTask),我在 mySQLTask 的执行后事件中创建另一个名为“日志结果”的执行 SQL 任务。 2) 我创建了一个名为 Log_Result 的存储过程,它从“日志结果”执行 SQL 任务中执行。 3) 然后我从 mySQLTask 复制 SQL 语句并将其作为硬编码参数粘贴到存储过程参数中。例如,在 SQL Statement 属性的“Log Result”SQL 任务中... "EXEC Log_Result ?,?,'SELECT COUNT(*) FROM TABLE',?

有没有一种方法可以让我从 mySQLTask 动态检索 SQL 语句?有没有更好的方法来做到这一点?

我还探索了 SSIS 在日志记录功能中的 ExecuteSQLExecutingQuery 选项的内置日志记录。它给了我执行的 SQL 语句,但我也想跟踪结果。

谢谢。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    我强烈推荐这本书和其中包含的日志框架:

    Microsoft SQL Server 2008 集成服务:问题、设计、解决方案

    ISBN: 978-0-470-52576-0

    如果我正确理解了您的问题,我会说它完全符合您的要求。 Code download link here.

    如果我正确理解了您的问题,我会说如果您从具有 SQL Server 配置类型的包配置中配置执行 SQL 任务 SQLStatement 属性,它可以用于执行您所描述的操作。

    这将允许您将 SQL 语句保存在 SQL Server 中的表中,您可以查询并加入包含每个包任务日志的其他表。

    设置起来非常简单,而且非常强大。作者在逐步引导您完成这一方面做得非常出色。您应该需要大约一天的时间才能启动并运行它。

    记录执行 SQL 任务的标量结果将是对 SSIS PDS 框架的增强。但我不会太担心:应该很好地适应开箱即用的 PackageTaskLog 表。我在下面提供 PackageTaskLog 脚本供您参考。

    CREATE TABLE [adm].[PackageTaskLog](
        [PackageTaskLogID] [int] IDENTITY(1,1) NOT NULL,
        [PackageLogID] [int] NOT NULL,
        [SourceName] [varchar](255) NOT NULL,
        [SourceID] [uniqueidentifier] NOT NULL,
        [StartDateTime] [datetime] NOT NULL,
        [EndDateTime] [datetime] NULL,
     CONSTRAINT [PK_PackageTaskLog] PRIMARY KEY CLUSTERED 
    (
        [PackageTaskLogID] ASC
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2018-03-27
      • 2021-08-05
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多