• DTS开发记录(9)-- 数据迁移任务 DataTask


        在DTS开发记录(1)--系统总体结构 一文中,我们已经看到,一次数据传递任务基于一个连接对和一个数据映射进行。但是之前,我们并没有提到“数据迁移任务”这个元素。随着设计的演化,我们发现一个数据任务已经不再仅仅是一个连接对加上一个数据映射了。现在,我们完全有必要把“数据迁移任务”这个概念抽象的表示出来,称之为DataTask。

        有了DataTask,我们的数据引擎就可以修改为基于一个指定的DataTask执行。DataTask不仅封装了在其上执行数据迁移的连接对和数据映射,还封装了数据迁移的控制/配置信息。另外,对于定时执行数据传递任务的配置也是封装在DataTask中的。当将DataTask抽象出来后,我们便可以在多处直接复用它:
    (1)数据传递引擎
    (2)数据检查
    (3)定时设置
    (4)任务详细设置

        所有的数据迁移任务都序列化后保存在DTS系统的配置文件中,当程序启动时,将自动加载已经存在的所有数据迁移任务。DataTask的类图如下:


        UseTrigger属性说明了当数据源为数据库时,是否采用触发器获取数据增量(前提是,我们必须有创建触发器和增量表的权限)。DataTransferOption记录关于本任务的所有详细设置。TimerConfiguration属性则是本任务的定时执行的时间信息。

        下面详细介绍一下DataTransferOption和TimerConfiguration,首先看DataTransferOption。
    (1)DTSType属性说明了数据导出的类型:全部导出、增量导出。
    (2)如果是增量导出,则IncreaseAdd、IncreaseUpdate、IncreaseDelete属性表明了要导出哪些增量。
    (3)LocalFileLogEnabled属性表明是否记录本地文件日志
    (4)SourceFieldInvalidHandleType属性指定了当数据源不满足转换条件时的处理方式:忽略、回滚、记录日志。
    (5)DBLogType是记录数据库日志的类型:将日志记录到源数据库、还是目标数据库。
    (6)SourcePageSize是分页读取数据源时页的大小。
    (7)SourceWhereStr属性是筛选源数据的条件语句。
    (8)WhereEnabled属性控制SourceWhereStr是否有效。

        TimerConfiguration记录了定时任务的详细设置,定时任务执行有几种方式:
    (1)每小时
    (2)每天
    (3)每周
    (4)每月
    (5)每隔制定时间

        public enum TimerType
        {
            PerDay, PerHour, PerMonth, PerWeek ,EverySpan
        } 

        定时任务通常都是与增量导出结合在一起的。

         系统中所有的数据迁移任务都由DTConfiguration管理起来,同样的,DTConfiguration管理了系统中的所有连接对。例外的是,所有的映射文件是单独保存在特定的目录下的,而不是由DTConfiguration管理。这是因为,我们经常需要将某个映射文件拷贝到别的地方。DTConfiguration的类图如下:



    转到:DTS开发记录(序)

  • 相关阅读:
    MySQL慢查询日志总结
    SQL Server 关于列的权限控制
    Oracle global database name与db link的纠缠关系
    TCP Provider The semaphore timeout period has expired
    SQL SERVER 中如何用脚本管理作业
    Unable to determine if the owner (DomainUserName) of job JOB_NAME has server access
    TNS-12535: TNS:operation timed out案例解析
    ORA-12154 & TNS-03505 案例分享
    MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间
    查看数据库表的数据量和SIZE大小的脚本修正
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/464207.html
Copyright © 2020-2023  润新知