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的方式将最新的员工信息发布出来。
点击”GetEmployees” 链接
点击“调用”按钮
我这里只是简单地随机产生了100个员工,包括了ID,Name,Gender,WorkYears,Groups等信息
这个服务的代码如下
using System;
using System.Web.Services;
using System.Data;
namespace HRService
{
///
/// 这个服务模拟了一个人事系统,它将最新的员工列表发布出来
/// 作者:陈希章
///
[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任务项去调用该服务
我们从工具箱中,拖拽一个”Web服务任务”到“控制流”的空白区域
选中该任务,点击右键,“编辑”
点击”HttpConnection”右侧的下拉按钮,选择“新建连接”
【注意】这里的服务器Url应该带有wsdl后缀,因为等一下可以利用这个路径生成一个本地的wsdl文件
我们这里没有使用凭据。需要说明一下的是,“Web服务任务”能够使用的凭据只有两种:匿名或者基本验证。
何时使用证书?如何我们的服务是用WSE做了安全控制的话。
点击“测试连接”,确保它是成功的
点击“确定”,“确定”退出连接管理器设置界面
在“WSDLFile”这里面输入一个临时路径,例如:E:/TEMP/Employee.wsdl
点击“下载WSDL”按钮, 如果不出意外的话,应该可以看到下面的提示
这个操作其实是产生了一个wsdl文件,我们可以打开来看一下
顾名思义,WSDL是对服务进行了描述。为什么需要描述呢?就是后续需要用到里面的信息进行设置。
接下来,我们转到“输入”这个页面
依次在右侧选择Service和Method
【注意】第三行有些乱码,是因为对中文支持不好,可以不予理会
这样,我们就完成了输入设置,也就是可以连接到Web Service了。
3. 如何将获取到的数据进行保存或者处理呢?
我们可以转到“输出”页面
它支持两种输出类型:文件连接或者变量
我们先用“文件连接”来接受输出,然后点击”File”右侧的小下拉箭头,点击“新建连接”
我们让它创建一个新的文件,保存在临时目录下。点击“确定”后即可完成该任务的配置
4. 测试任务运行。
选中“Web服务任务”,点击右键,“执行任务”
如果不出意外的话,该任务能够成功执行。
5. 查看结果。我们打开保存的那个文件,可以看到,这是一个标准的XML文件,证明我们已经把数据下载下来了。
结束语:我们现在已经通过“Web服务任务”成功地完成了服务的调用,并且将结果保存为一个本地文件。那么,怎么处理该文件,并将其数据上传到我们的数据仓库中去呢?
这个问题在下一篇讲解