• [译]Stairway to Integration Services Level 11


    介绍

    在前一个章节我们讨论了事先行为,分享了如何操作默认的行为和时间冒泡,并且介绍了父子模型.

    本文中,我们会配置SSIS日志. 进行简单及高级日志配置,存储,和检索的实验.并且生成自定义日志信息.

    More About SSIS Task Events

    打开 Precedence.dtsx 包,你 Control Flow 界面应该显示如下:

    image

    图 1

    在测试之前,我们先来验证或修改一些设置.首先点击  Precedence.dtsx 包 Control Flow界面的空白处,然后在属性面板里面把DisableEventHandlers的值改为False :
    image

    图 2

    事件监听 Event Listeners

    任务(Tasks)和容器(containers)在SSIS中也被成为可执行程序(executables).  可执行程序 Executables 引发一个事件. SSIS 事件处理监听并响应任务和容器触发的事件.

    SSIS事件信息在可执行文件中传送. 信息传送遵循规则. 首要的就是: 信息流从底部向高流动.

    SSIS 日志也是如此.

    配置SSIS 日志 Configuring SSIS Logging

    要配置 SSIS logging, 点击SSIS 下拉菜单,然后点击 Logging 项.:

    image
    图 9

    Configure SSIS Logs 窗口显示如下:

    image
    图 10

    提供的日志类型如下:

    • Windows Event Log
    • Text Files
    • XML Files
    • SQL Server
    • SQL Server Profiler

    image
    图 11

    选择“SSIS log provider for Text files”然后点击Add 按钮添加文本文件日志到Precedence.dtsx SSIS 包:

    image
    图 12

    注意底部的一个框,会提示你接下来应该做什么

    image
    图 13

    如上所属, 下一步选择 Containers树形视图的复选框来启用日志记录. 启用 Precedence 包的日志记录.显示如下: 

    image
    图 14

    我们现在可以配置日志本身,我们要做的第一件事情是给已在Cointainers 视图里面选中的包分配一个日志.  直接复选刚才添加的那个日志即可:

    image
    图 15

    日志选中以后你就可以修改Description 属性, 其中 Configuration 属性也是必须的. 点击下拉框选择 “<New connection…>” 

    image

    图 16

    一个新的 File Connection Manager 会被创建,并且打开:

    image
    图 17

    在Usage type 选择 “Create file” , 如果文件不存在就会创建日志文件,如果日志文件存在,那么数据会被添加.  

    随后在My_First_SSIS_Project 解决方案目录创建一个新的”log”目录 :

    image

    图 18

    在编辑器中选择Browsing,然后文件名写“MyLog.csv” :

    image
    图 19

    点击Open 按钮配置如下: 

    image
    图 20

    点击OK按钮完成 File Connection Manager 的配置,在 Connection Managers 标签下面你可以看到刚创建的连接:

    image
    图 21

    现在我们执行包看看效果. 打开 MyLog.csv .

    记住. SSIS log会监听 事件,默认情况下. 日志监听包PackageStart 和 PackageEnd 事件. :

    image

    图 22

    添加日志Adding Events

    再次打开日志配置器. 点击 Details 标签.选择  OnError 和 OnInformation 事件:

    image
    图 23

    再次执行包 Script Task 2 选择成功,Script Task 4 选择失败.然后点开MyLog.csv 再次查看:

    image
    图 24

    跟在原 PackageEnd 事件之后的是一个新的PackageStart 接下来三个错误信息是OnError events . 分别是 Script Task 4,Sequence Container 1, 和 Precedence.dtsx 包的 OnError 事件 .最后是另一个 PackageEnd 事件.

    高级日志配置 Advanced Log Configuration

    再次打开 SSIS 日志编辑窗口点击 Details 标签, 底部还有三个按钮: Advanced, Load, and Save;

    image

    图 25

    点击 Advanced 按钮显示可选的SSIS 日志字段. :

    image
    图26

    让我们做一下变动,重新选择如下:

    image

    点击 OK 按钮关闭SSIS 日志配置窗口.

    建立一个用户自定义日志 Raising Custom Events On-Demand, Part 1

    虽然SSIS会自动生成很多日志信息,但是你还是可以手动触发日志,并且定义用户日志信息 .

    打开 Script Task 3 的脚本编辑页面. Public Sub Main() 部分显示如下 :

    Public Sub Main()
            Dim sTaskName As String = Dts.Variables("TaskName").Value.ToString
            MsgBox(sTaskName & " completed.")
            Dts.TaskResult = ScriptResults.Success
          End Sub

    我的项目文件选的是C# 因此显示如下:

    public void Main()
            {
                // TODO: Add your code here
                string sTaskName = Dts.Variables["TaskName"].Value.ToString();
                MessageBox.Show(sTaskName + " completed.");
                Dts.TaskResult = (int)ScriptResults.Success;
            }

    Listing 1

    编辑脚本,使之显示如下:

    Public Sub Main()
            Dim sTaskName As String = Dts.Variables("TaskName").Value.ToString
            Dim sMsg As String = sTaskName & " completed."
    
            Dts.Events.FireInformation(101, sTaskName, sMsg, "", 0, True)
            MsgBox(sMsg)
    
            Dts.TaskResult = ScriptResults.Success
    End Sub

    C#代码

    public void Main()
            {
                string sTaskName = Dts.Variables["TaskName"].Value.ToString();
                string sMsg = sTaskName + " completed.";
                bool fay = true;
    
                Dts.Events.FireInformation(101,sTaskName,sMsg,"", 0, ref fay);
                System.Windows.Forms.MessageBox.Show(sMsg);
    
                Dts.TaskResult = (int)ScriptResults.Success;
            }

    Listing 2

    我们添加了代码,用来手动触发一个 Information 事件: Dts.Events.FireInformation(101, sTaskName, sMsg, "", 0, True).  FireInformation 有留个参数 : informationCode (Integer), subComponent (String), description (String), helpFile (String), helpContext (Integer), 和 fireAgain (Boolean). InformationCode 可以用来对信息分类. 我使用 subComponent 鉴别日志. description 是信息描述.  HelpFile 和 helpContext 是帮助提示 ,我从来没配置过,所以不确定他们是怎么工作的. 另外 FireAgain 参数已经废弃 我设置了默认值True .

    关闭SSIS 脚本编辑器,再次执行  Precedence.dtsx 包,选项和以前一样 .打开日志文件显示如下:

    image
    图 31

    注意新的  OnInformation 已经显示,同样也是通过冒泡传递 Script Task 3 –> Sequence Container 1 –> Precedence.dtsx SSIS package.

    建立一个用户自定义日志 Raising Custom Events On-Demand, Part 2

    与 Information 事件一样,我们也可以建立一个自定义的Error事件, 打开 Script Task 4 脚本编辑器 代码改成下面这样:

    Public Sub Main()
            Dim sTaskName As String = Dts.Variables("TaskName").Value.ToString
            Dim iResponse As Integer
    
            iResponse = MsgBox("Succeed " & sTaskName & "?", _
                               MsgBoxStyle.YesNo + MsgBoxStyle.Question, _
                               sTaskName & " Success Question")
    
            If iResponse = vbYes Then
                Dts.TaskResult = ScriptResults.Success
            Else
                'Dts.TaskResult = ScriptResults.Failure
                Dts.Events.FireError(-1001, "Script Task 4", _
                                     "Script Task 4 failed!", "", 0)
            End If
    End Sub

    Listing 5

    原文连接:

    http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/95353/

    资源:

    My_First_SSIS_Project_After_Step_11.zip

  • 相关阅读:
    个人对BFC的见解
    事件简单示例
    visual studio .net 2003
    C# Dictionary 的几种遍历方法
    C# 监听文件夹
    调用SAP dll 出现 试图加载格式不正确的程序
    SAP Connector 类概述
    Sapnco3.0 RFC Server Programs Receive Idocs
    微软工具下载地址
    Sapnco3.0 RFC Client Programs
  • 原文地址:https://www.cnblogs.com/haseo/p/4105751.html
Copyright © 2020-2023  润新知