介绍

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

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

More About SSIS Task Events

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

图 1

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

图 2

事件监听 Event Listeners

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

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

SSIS 日志也是如此.

配置SSIS 日志 Configuring SSIS Logging

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


图 9

Configure SSIS Logs 窗口显示如下:


图 10

提供的日志类型如下:

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


图 11

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


图 12

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


图 13

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


图 14

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


图 15

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

图 16

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


图 17

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

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

图 18

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


图 19

点击Open 按钮配置如下:


图 20

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


图 21

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

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

图 22

添加日志Adding Events

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


图 23

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


图 24

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

高级日志配置 Advanced Log Configuration

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

图 25

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


图26

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

点击 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(, sTaskName, sMsg, "", , 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(,sTaskName,sMsg,"", , 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 包,选项和以前一样 .打开日志文件显示如下:


图 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(-, "Script Task 4", _
"Script Task 4 failed!", "", )
End If
End Sub

Listing 5

原文连接:

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

资源:

My_First_SSIS_Project_After_Step_11.zip

[译]Stairway to Integration Services Level 11 - 日志配置的更多相关文章

  1. [译]Stairway to Integration Services Level 12 - 高级日志配置

    介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾    Reviewing SSIS Task Events 在做实 ...

  2. [译]Stairway to Integration Services Level 16 – Flexible Source Locations (多文件导入)

    介绍 在本文中我们将利用SSIS参数,变量 以及 Foreach Loop Container 从多个源动态导入数据. 开始前我们先下载一些数据.WeatherData_Dec08_Apr09.zip ...

  3. [译]Stairway to Integration Services Level 9 - Control Flow Task Errors

    介绍 在本文中,我们会实验 MaximumErrorCount和ForceExecutioResult 故障容差属性,并且还要学习Control Flow task errors, event han ...

  4. [译]Stairway to Integration Services Level 18 – 部署和执行

    介绍 在本文中,我们要创建一个SSIS Catalog 实例,部署我们的项目,并且运行 weather data loader 包. SSIS 2012 部署模型   SSIS 2012 Deploy ...

  5. [译]Stairway to Integration Services Level 10 - 高级事件活动

    介绍 在前一篇文章中我们介绍了故障容差相关的 MaximumErrorCount 和 ForceExecutionResult 属性.  同时我们学习了SSIS Control Flow task e ...

  6. [译]Stairway to Integration Services Level 13 - SSIS 变量回顾

    介绍 在前一篇中我们组合了已经学过的事件冒泡 event bubbling, 日志记录 logging, 和父子模型 Parent-Child pattern 建立了自定义的SSIS包日志记录. 本文 ...

  7. [译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级

    介绍 前一个章节我们对SSIS的优先约束做了初步了解,并且实验了MaxConcurrentExecutables 包属性的设置. 本文将测试“On Success”, “On Completion”, ...

  8. [译]Stairway to Integration Services Level 6 - SSIS 工作流管理基础

    简介 在之前的章节中,我们学习了增量载入数据. 本文中.我们通过优先约束(Precedence Constraints)来管理SSIS的工作流. 添加一个SSIS包 图 1 将新建的Package1. ...

  9. [译]Stairway to Integration Services Level 5 - 增量删除数据

    在 dbo.Contact中添加一行记录 Use AdventureWorks go Insert Into dbo.Contact (FirstName, MiddleName, LastName, ...

随机推荐

  1. eclipse更改主题

    长期使用eclipse,导致视觉疲劳,就想着能否换个主题调节调节. 通过设置window>preferences>appearance设置theme,貌似不起作用. 一查,发现一个绝佳的网 ...

  2. 网络抓包--Wireshark

    Wireshark 是一款非常棒的Unix和Windows上的开源网络协议分析器.它可以实时检测网络通讯数据,也可以检测其抓取的网络通讯数据快照文件.可以通过图形界面浏览这些数据,可以查看网络通讯数据 ...

  3. Highlight On Mouseover Effect With JQuery

    How to get the xpath by clicking an html element How to get the xpath by clicking an html element Qu ...

  4. cc150:实现一个算法来删除单链表中间的一个结点,仅仅给出指向那个结点的指针

    实现一个算法来删除单链表中间的一个结点,仅仅给出指向那个结点的指针. 样例: 输入:指向链表a->b->c->d->e中结点c的指针 结果:不须要返回什么,得到一个新链表:a- ...

  5. Android 匿名共享内存C接口分析

    在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口.Android系统 ...

  6. 线性规划问题的matlab求解

    函数:[x, fval] = linprog(f, A, b, Aeq, Beq, LB, UB) 返回的x:是一个向量——在取得目标函数最小时各个xi的取值: 返回的fval:目标函数的最小值: 参 ...

  7. SQLHelper简单版(基础版)

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  8. Auto-Layout 的各种坑Unable to create description in descriptionForLayoutAttribute_layoutItem_coefficient. Something is nil'

    我们的很多人现在都在使用autolayout,用着也是非常爽但是有了这个东西以后更爽 很省事,什么都不用自己搞.Xcode完全搞定了,但是我终于为自己的懒惰付出了代价,再iphone4怎么运行怎么cr ...

  9. Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/26/2368696.html 一.概述 TextToSpeech,就是将文本内容转换成语音,在其 ...

  10. BZOJ 1483: [HNOI2009]梦幻布丁( 链表 + 启发式合并 )

    把相同颜色的串成一个链表, 然后每次A操作就启发式合并, 然后计算对答案的影响. ----------------------------------------------------------- ...