How to Configure an SSIS Package to Access a Web Service using WCF
This information is from:http://blogs.msdn.com/b/dbrowne/archive/2010/07/08/how-to-configure-an-ssis-package-to-access-a-web-service-using-wcf.aspx
When you are connecting to a web service from an SSIS Script component or transform using a WCF client, the normal method of configuring the WCF client from the application configuration file doesn’t work well. Your package will be running in some host, like dtexec.exe, and you would have to put your client config its application configuration file. SSIS packages have their own way of consuming configuration, by either setting package variables (or other settings) from the command line, or using an external package configuration (stored in a SQL Server table or XML file). To use the normal SSIS configuration mechanisms to configure a WCF client, the easiest way is to configure your WCF client in code, and plug in package variables for things like the service URL, or perhaps the client credentials or proxy settings. If you configure the WCF client in code using this technique then you don't have to edit the dtexec.exe.config file.
Here’s a quick walkthrough of calling a Web Servcie from a WCF client in an SSIS package, configuring the WCF client in code and using a package variable for the web service URL.
First create a WCF Service for testing (or use some existing web service):
![]()
then hit F5 to run the service in the development server, and note the URL of the .svc file:
![]()
Create a new SSIS package and add a DataFlow and a Script Component configured to Source. Add output columns to the script source to match the data flowing out of the web service. Here it’s just a single integer.
![]()
Edit the script for the script source and change the target .NET Framework from 2.0 to 3.5 so you can use WCF:
![]()
In the Script project add a Service reference:
![]()
Enter the URL of your web service, and give it a friendly name:
![]()
Create a Package variable to configure the service URL, and give the script source read-only access to the variable.
![]()
Now edit the script to configure the WCF client in code and pass in the package variable for the URL.
/* Microsoft SQL Server Integration Services Script Component
* Write scripts using Microsoft Visual C# 2008.
* ScriptMain is the entry point class of the script.*/ using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.ServiceModel;
using SC_e9f00fa5cbb748d4b5b80e10f6c61d98.csproj.MyService; [Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{ ChannelFactory<IService1> channelFactory;
IService1 client;
public override void PreExecute()
{
base.PreExecute(); //create the binding
var binding = new WSHttpBinding();
//configure the binding
binding.Security.Mode = SecurityMode.Message;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; var endpointAddress = new EndpointAddress(this.Variables.ServiceUrl);
channelFactory = new ChannelFactory<IService1>(binding, endpointAddress); //create the channel
client = channelFactory.CreateChannel();
} public override void PostExecute()
{
base.PostExecute(); //close the channel
IClientChannel channel = (IClientChannel)client;
channel.Close(); //close the ChannelFactory
channelFactory.Close(); } public override void CreateNewOutputRows()
{ for (int i = ; i < ; i++)
{
this.Output0Buffer.AddRow();
CompositeType t = new CompositeType();
t.BoolValue = false;
t.StringValue = i.ToString(); var data = client.GetDataUsingDataContract(t);
this.Output0Buffer.id = data.BoolValue?:;
} } }
If you’re not sure what binding to use look at the app.config that the Add Service Reference wizard put in your script project. It will tell you. Here it requires wsHttpBinding with Message transport security and a Windows credential:
![]()
Add a simple data flow destination and test your package:
![]()
Then you can set the value of the package variable on the command line with dtexec.exe or SQL Agent, or create a package configuration that has sets them.
How to Configure an SSIS Package to Access a Web Service using WCF的更多相关文章
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- 一次SSIS Package的调试经历
SSIS Package的调试有时是一个非常艰难的过程,由于SSIS 编译器给出的错误信息,可能并不完善,需要程序员根据错误信息抽丝拨茧,寻找错误的根源,进而解决问题. 第一部分:SSIS提供的调试工 ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性
开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...
- 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package
开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...
- SQL Server(SSIS package) call .net DLL
There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...
- ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案
原文:ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案 针对 SSIS intergation 项目 > 属性 > Debug >Run64bITRunt ...
- SSIS Package to Call Web Service
原文 SSIS Package to Call Web Service SSIS Package to Call Web Service. You can Call WebService from S ...
- Agent Job代理 执行SSIS Package
摘要: 在使用Agent Job时, 运行SSIS包的Run as账号,必须有SSIS中connection manager的连接权限. 如果没有连接权限,可以用创建proxy账号,并确保proxy账 ...
随机推荐
- 从jscript脚本混淆说起
转载:http://www.freebuf.com/column/144897.html 脚本病毒是一个一直以来就存在,且长期活跃着的一种与PE病毒完全不同的一类病毒类型,其制作的门槛低.混淆加密方式 ...
- zabbix ssh登录ip监控,登录ip归属地查询
#!/usr/local/zabbix/scripts/src/bin/python # -*- coding: UTF-8 -*- from bs4 import BeautifulSoup as ...
- [BZOJ1044][HAOI2008]木棍分割 二分+贪心+dp+前缀和优化
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4112 Solved: 1577 [Submit][St ...
- git回溯到指定版本
git回溯到指定版本 git log命令查看仓库日志 然后使用git checkout 命令 例如回溯到上图中的版本 git checkout 12db5d6fd138922a8aaf2214c84c ...
- (3)Oracle提供的.net连接驱动
老的visual studio不能用 ( .NET 4 以后才能用) Oracle Data Access Components (ODAC) 是什么? ODAC中文名称叫Oracle访问存取组件,里 ...
- Python的扩展接口[1] -> 串口通信
串口通信 / Serial Communication 1 串口简介 / Serial Introduction 串行接口(Serial Interface)简称串口,通常为COM接口,数据发送方式为 ...
- Python的网络编程[4] -> DHCP 协议[1] -> DHCP 的 Python 实现
DHCP实现 / DHCP Implement 目录 DHCP 服务器建立过程 DHCP 报文加码实现过程 下面介绍建立一个简单的DHCP服务器,主要用于对基本的DHCP请求进行响应,目前只提供一个I ...
- [Usaco2010 Nov]Visiting Cows
题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...
- Nginx的server为0.0.0.0/0.0.0.1的作用?
看到kong默认的代理和后台server 都是0.0.0.0,代理到上游的服务器proxy_pass $upstream_scheme://kong_upstream;配置如下, upstream k ...
- List和ArrayList的区别和联系
1. List是一个接口,而ArrayList是List接口的一个实现类. ArrayList类继承并实现了List接口. 因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们 ...