zoukankan      html  css  js  c++  java
  • 在SSIS中使用Web Service任务进行集成

    SSIS是SQL Server 2005新增的一个服务,全称是SQL Server Integration Service。中文一般翻译为:集成服务或者整合服务。

    SSIS在整个SQL Server的BI 平台中的定位是ETL解决方案,它的前身是SQL Server 2000的DTS(Data Transfomation Service),但较之DTS,有了很大的改变和增强:它是完全基于.NET编写的,并且提供了完整的服务、运行引擎、异常处理、跟踪日志、扩展机制等等。

    有关SSIS的完整内容,如果有兴趣,应该参考有关的书籍,或者参加有关的培训学习。

    本文主要讲解一下,如何在SSIS中使用Web Service,这是我经常被问到的问题:因为在做数据集成的时候,数据源系统可能没有办法让我们直接访问数据库。但是他们可以公开一些服务,这样我们就可以通过访问这些Web Service对其进行读取和整合。

    1. 作为演示目的,我写了一个很简单的服务。模拟的是人事系统,它通过Web Service的方式将最新的员工信息发布出来。

    image

    点击”GetEmployees” 链接

    image

    点击“调用”按钮

    image

    我这里只是简单地随机产生了100个员工,包括了ID,Name,Gender,WorkYears,Groups等信息

    这个服务的代码如下

    using System;
    using System.Web.Services;
    using System.Data;
    
    namespace HRService
    {
        /// <summary>
        /// 这个服务模拟了一个人事系统,它将最新的员工列表发布出来
        /// 作者:陈希章
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        public class EmployeeService : System.Web.Services.WebService
        {
            [WebMethod(
                Description="这个服务取得所有的员工")]
            public DataSet GetEmployees()
            {
                DataSet ds = new DataSet();
                DataTable tb = new DataTable("Employees");
    
                tb.Columns.Add("ID");
                tb.Columns.Add("Name");
                tb.Columns.Add("Gender");
                tb.Columns.Add("WorkYears");
                tb.Columns.Add("Group");
    
                Random rnd=new Random();
                for (int i = 0; i < 100; i++)
                {
                    DataRow row = tb.NewRow();
                    row[0] = i+100;
                    row[1] = "员工" + i.ToString();
                    row[2] = i % 5 == 0 ? "男" : "女";
                    row[3] = rnd.Next(20);
                    row[4] = "班组" + i % 9;
    
                    tb.Rows.Add(row);
                }
                ds.Tables.Add(tb);
    
                return ds;
            }
        }
    }
    

    2. 创建一个SSIS包,准备使用Web Service任务项去调用该服务

    image

    我们从工具箱中,拖拽一个”Web服务任务”到“控制流”的空白区域

    image

    选中该任务,点击右键,“编辑”

    image

    点击”HttpConnection”右侧的下拉按钮,选择“新建连接”

    image

    【注意】这里的服务器Url应该带有wsdl后缀,因为等一下可以利用这个路径生成一个本地的wsdl文件

    我们这里没有使用凭据。需要说明一下的是,“Web服务任务”能够使用的凭据只有两种:匿名或者基本验证。

    何时使用证书?如何我们的服务是用WSE做了安全控制的话。

    点击“测试连接”,确保它是成功的

    image

    点击“确定”,“确定”退出连接管理器设置界面

    image

    在“WSDLFile”这里面输入一个临时路径,例如:E:\TEMP\Employee.wsdl

    image

    点击“下载WSDL”按钮, 如果不出意外的话,应该可以看到下面的提示

    image

    这个操作其实是产生了一个wsdl文件,我们可以打开来看一下

    image

    顾名思义,WSDL是对服务进行了描述。为什么需要描述呢?就是后续需要用到里面的信息进行设置。

    接下来,我们转到“输入”这个页面

    image

    依次在右侧选择Service和Method

    image

    【注意】第三行有些乱码,是因为对中文支持不好,可以不予理会

    这样,我们就完成了输入设置,也就是可以连接到Web Service了。

    3. 如何将获取到的数据进行保存或者处理呢?

    我们可以转到“输出”页面

    image

    它支持两种输出类型:文件连接或者变量

    我们先用“文件连接”来接受输出,然后点击”File”右侧的小下拉箭头,点击“新建连接”

    image

    我们让它创建一个新的文件,保存在临时目录下。点击“确定”后即可完成该任务的配置

    4. 测试任务运行。

    image

    选中“Web服务任务”,点击右键,“执行任务”

    image

    如果不出意外的话,该任务能够成功执行。

    5. 查看结果。我们打开保存的那个文件,可以看到,这是一个标准的XML文件,证明我们已经把数据下载下来了。

    image

    结束语:我们现在已经通过“Web服务任务”成功地完成了服务的调用,并且将结果保存为一个本地文件。那么,怎么处理该文件,并将其数据上传到我们的数据仓库中去呢?

    这个问题在下一篇讲解

    本文由作者:陈希章 于 2009/6/20 11:20:05 发布在:http://www.cnblogs.com/chenxizhang/
    本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心
  • 相关阅读:
    [HDU] 2084 数塔 入门dp
    一些实用的小技术,不定时更新^_^
    上传图片的综合验证
    一个典型web接口处理
    js控制背景音乐播放
    心开始平和起来
    冲突域广播域
    可怜的我的啊~~
    祈祷
    昨夜小楼又东风...
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1507270.html
Copyright © 2011-2022 走看看