【问题标题】:SSIS Sql parameters loggingSSIS Sql 参数记录
【发布时间】:2012-01-09 15:23:52
【问题描述】:

在 sql server 2008 ssis 包中是否有办法自动记录传递给存储过程和/或命令的参数? 我正在尝试从链接到全局 OnError 事件的脚本任务中访问这些信息,但它似乎不是对当前 sql 命令的引用,有没有一般的方法可以做到这一点?还是我必须为我正在触发的每个 sql 命令实现自定义日志记录?

提前致谢

【问题讨论】:

  • 我不知道与Execute SQL 任务相关的任何东西可以自动处理此问题,但这并不是说没有捕获此信息的机制。你能提供更多信息吗?参数的值是分配的还是通过表达式计算的?

标签: logging error-handling ssis


【解决方案1】:

这可能会有所帮助,我在我的一个项目中定义了许多 Execute Process Tasks。每个容器都有自己的一组输入和输出,我希望记录这些输入和输出,因此我的方法是添加一个 OnPostExecute 事件以及与之关联的脚本任务。在那里,我触发了信息事件以记录该任务中发生的事情的详细信息。这显然假定您已选择要记录的 OnInformation 事件。

        try
        {
            //User::ExecuteArgs,User::ExecuteError,User::ExecuteOutput
            string args = Dts.Variables["ExecuteArgs"].Value.ToString();
            string output = Dts.Variables["ExecuteOutput"].Value.ToString();
            string error = Dts.Variables["ExecuteError"].Value.ToString();
            bool fireAgain = false;
            if (!string.IsNullOrEmpty(output))
            {
                Dts.Events.FireInformation(0, "Post execute output", string.Format("Output: {0}", output), string.Empty, 0, ref fireAgain);
            }

            if (!string.IsNullOrEmpty(error))
            {
                Dts.Events.FireWarning(0, "Post execute error", string.Format("Error: {0}", error), string.Empty, 0);
            }

            if (!string.IsNullOrEmpty(args))
            {
                Dts.Events.FireInformation(0, "Post execute args", string.Format("Args: {0}", args), string.Empty, 0, ref fireAgain);
            } 

        }
        catch (Exception ex)
        {
            this.Dts.Events.FireWarning(0, "Post package execution", string.Format("Trouble accessing variables {0}", ex.ToString()), string.Empty, 0);

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多