Pages

Wednesday, July 2, 2014

Calling a Web Service from a SQL Integration Services package

Introduction

The SSIS framework provides a Web Service task which executes a Web Service method. You can use the Web Service task for the following purposes:
  • Writing to a variable the values that a Web Service method returns.
  • Writing to a file the values that a Web Service method returns.
Image1.jpg
This article defines a step by step approach to using a Web Service call in SQL Integration Services.
First, create a web service project.
image2.jpg
Figure 2 - Create a Web Service
Now, expose a method call in the Web Service:
public class SSISService : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloMoon()
    {
        return "Hello Moon";
    }
    [WebMethod]
    public int Multiply(int nParam1, int nParam2)
    {
        return nParam1 * nParam2;
    }
}
Create an SSIS package:
image3.jpg
Figure 3 - Create an SSIS Package
Add a web service task:
image4.jpg
Figure 4 - SSIS Toolbox
image5.jpg
Figure 5 - Web Service Task
Next, modify the Web Service task:
image6.jpg
Figure 6 - Edit Web Service Task
image7.jpg
Figure 7 - Web Service Task Editor
Now, define the HTTP connection:
image8.jpg
Figure 8 - HTTP Connection Manager Editor
The next step is to define the WSDL file:
image9.jpg
Figure 9 - Web Service Task Edit (Definition of the WSDL file)
Define the Web Service Task inputs:
image10.jpg
Figure 10 - Web Service Task Editor (Definition of web service input properties)
Now, define the Web Service output. The output of the Web Service can be written to variables or to an output file. This sample outputs the results from the Web Service to a file system file that is defined using the File Connection Manager Editor (Figure 11).
image11.jpg
Figure 11 - Web Service Task Editor (Definition of Web Service output properties)
image12.jpg
Figure 12 - File Connection Manger

Results

The following is the encoded output from the Web Service, stored in a test.txt file:
<?xml version="1.0" encoding="utf-16"?>
<int>200</int>

No comments:

Post a Comment