概述

对于IT信息技术来说,应用程序和数据就好像太极的阴阳两极,通过对这两者进行组合,即可获得 IT的业务价值。虽然公司、ZF机关需要使用大量不同应用程序,并用不同格式存储数据,但为了从这种多样化中充分获益,往往需要用智能的方式将所有内容进行连接。换句话说,也就是需要集成!

在集成的过程中可能会产生很多非常麻烦的问题,通常存在于公司、ZF机关中的都是大量的异构系统、异构数据。每种应用程序拥有自己的立场和特有的表现形式,并且随着时间的流逝,IT环境慢慢变得更加复杂。根据不同业务的需求,会由不同部门在不同地点部署不同的应用程序和数据库。这些因素使得集成工作面临重大挑战,这种挑战有可能出自于技术上的,也有可能出自于业务上的。

为了面对这一挑战,我们通过BizTalk与SQL Server的结合,为业务创造出更大的价值。

  • BizTalk Server:其重点在于连接不同的应用系统,并基于SOA的架构对来自异构系统的服务进行流程编排和重组,从而对多个业务流程实现自动化;同时,也可以使用它进行某些类型的数据集成,并对数据进行权威清晰、过滤、比对等操作。
  • SQL Server:目标是使用更智能的方式来操作数据,这也就意味着需要在不同的应用系统间保持数据同步,或创建数据仓库等等。

在这篇文章中将介绍如何通过BizTalk将来自于各个异构应用系统的数据,传送到SQL Server数据库当中,并介绍如何使用BizTalk与数据库进行通信,如调用存储过程等等。


演示

场景介绍

在这里我们有一个SQL的存储过程,用来更新仓库库存量,现在我们要做一个BizTalk的POC(概念验证),当接收到仓库补充货源消息的时候,使用BizTalk去调用SQL Server中的存储过程,来更新仓库的库存量。在演示过程中,我们会用到WCF-SQL适配器去调用SQL存储过程,并且设计一个测试流程来转换补充货源的消息,并将其作为参数传送到存储过程中进行更新,最后将更新的结果通过WCF-SQL适配器插入到数据表当中。

1. InventoryUpdate解决方案:在这个解决方案中有2个工程文件,分别为InventoryUpdate.OrchestrationInventoryUpdate.Schema。Schema工程文件中包含一个名为StoreInventoryUpdate的架构文件,它用来表示一个来自于POS系统发送过来的更新玩具商店库存的消息。Orchestration工程文件目前没有内容,我们会在后面完善它。

2. 玩具店SQL Server存储过程:该存储过程用来更新玩具商店的库存表,该存储过程需要4个参数,分别为productID、qty、storeNumberChangeType。通过ChangeType来判断是增加还是减小库存量。一个非常简单的存储过程,其T-SQL代码如下所示

USE [TailspinToys]
GO
/****** Object:  StoredProcedure [dbo].[sp_UpdateInventory]    Script Date: 07/14/2011 23:47:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_UpdateInventory](@productID int =0,@qty int = 0,  @storeNumber int = 0,@bChangeType int = 1
)/*bChangeType :    0 = decrease
1 = increase           */
AS
Declare @newQty int;
Declare @table varchar(50);
set @table = (SELECT TOP(1)[dbo].[Stores].[InventoryTableName] FROM [dbo].[Stores]WHERE [dbo].[Stores].[StoreNumber] = @storeNumber);
set @table = lower(@table);
if @table = 'storeinventory_01'
Beginif (@bChangeType = 1)begin--increase the qtyset @newQty = (Select qty from dbo.StoreInventory_01 where ProductID = @ProductID)+ @qtyendelsebegin--decrease the qtyset @newQty = (Select qty from dbo.StoreInventory_01 where ProductID = @ProductID)- @qtyendUpdate dbo.StoreInventory_01 Set Qty=@newQtyWhere (ProductID = @productID)
End
Else if @table = 'storeinventory_02'
Beginif (@bChangeType = 1)begin--increase the qtyset @newQty = (Select qty from dbo.StoreInventory_02 where ProductID = @ProductID)+ @qtyendelsebegin--decrease the qtyset @newQty = (Select qty from dbo.StoreInventory_02 where ProductID = @ProductID)- @qtyendUpdate dbo.StoreInventory_02Set Qty = @newQtyWhere (ProductID = @productID)
End
Else if @table = 'storeinventory_03'
Beginif (@bChangeType = 1)begin--increase the qtyset @newQty = (Select qty from dbo.StoreInventory_03 where ProductID = @ProductID)+ @qtyendelsebegin--decrease the qtyset @newQty = (Select qty from dbo.StoreInventory_03 where ProductID = @ProductID)- @qtyendUpdate dbo.StoreInventory_03Set Qty = @newQtyWhere (ProductID = @productID)
End
Else if @table = 'warehouse_inventory'
Beginif (@bChangeType = 1)begin--increase the qtyset @newQty = (Select qty from dbo.Warehouse_Inventory where ProductID = @ProductID)+ @qtyendelsebegin--decrease the qtyset @newQty = (Select qty from dbo.Warehouse_Inventory where ProductID = @ProductID)- @qtyendUpdate dbo.Warehouse_InventorySet Qty = @newQtyWhere (ProductID = @productID)
End
RETURN

3. 玩具店SQL Server数据库:目前该玩具店拥有4个仓储中心,这4个仓储的详细信息存储在dbo.Stores表中,并且每个仓储的库存信息存储分别存储在dbo.StoreInventory_01~04这4张表当中。


使用WCF-SQL适配器调用SQL Server 存储过程

1. 生成调用UpdateInventory存储过程所需架构。打开Visual Studio,右键点击InventoryUpdate.Orchestration并选择添加生成的项,双击添加适配器元数据,在添加适配器向导界面中,从适配器列表下选择WCF-SQL,点击下一步

2. 在使用适配器服务界面中,点击配置,在配置适配器窗口中,改变用户认证类型为Windows认证模式。切换到URI属性选项卡中,设置Server服务器名称为localhost,并将InitialCatalog数据库设置为TailspinToys,点击确定返回到使用适配器服务界面中。

3. 返回到使用适配器服务界面中,点击连接按钮,待连接上数据库后,在选择类型下拉框中选择存储过程,在右侧的可选列表中,选择[dbo].[sp_UpdateInventory]并点击添加,设置文件名前缀为UpdateInventory,点击确定完成设置。

4. 在Visual Studio中,双击UpdateInventory.xsd文件查看该架构,可以看到我们已经通过WCF-SQL适配器向导将数据库存储过程中所需的参数、请求消息、响应消息等都已经相应创建出来了。

转载于:https://www.cnblogs.com/aiwz/archive/2011/04/19/6154644.html

BizTalk Server 2010 + SQL Server 2008 R2 - 通过集成创造更大价值 [ 上篇 ]相关推荐

  1. 开机总显示SQL server服务器,sql server 2008启动服务是:提示请求失败或者服务无及时响应...

    这是log日志 2012-12-10 23:28:51.06 Server      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86 ...

  2. SQL Sever 2008 R2 数据库(2) ——数据库管理

    在FJ集团的工作中,要用到SQL Sever 2008 R2 数据库,于是,在工作中学习,在学习中工作.我就喜欢这种状态!中意做笔记,好记性不如烂笔头,方便自己,同时也方便在此方面有需要者!资源共享, ...

  3. [Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效(转)

    原帖由 qingyun 于 2010-6-21 15:44 发表  在写pl/sql的时候,有个很重要的注意点: 比如: begin   update  某个sqlserver的表@dblink名字 ...

  4. aws rds监控慢sql_探索AWS RDS SQL Server上SQL Server集成服务(SSIS)

    aws rds监控慢sql In the previous article, Deploy tabular databases in SSAS on AWS RDS SQL Server, we ex ...

  5. [Microsoft][ODBC SQL Server Driver][SQL Server]String or binary data would be truncated.

    Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e57' [Microsoft][ODBC SQL Server Driver][SQL Ser ...

  6. 安装SQL Server和SQL Server Management Studio(SSMS)

    我也是第一次安装SQL Server和SQL Server工具,SQL Server Management Studio(SSMS). 经过查询了资料,开始了我的第一次数据库安装. 这是我安装的经验分 ...

  7. 2.SQL SERVER笔记——SQL SERVER系统概念

    2.SQL SERVER笔记--SQL SERVER系统概念 系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解.数据库开发人员了解SQLSERVER自带的系 ...

  8. 用eclipse连接数据库捕获java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。

    用eclipse连接数据库捕获异常显示java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数 ...

  9. 检测java是否连接到SQL server数据库 + SQL server数据库内置账户sa无法登录

    检测java是否连接到SQL server数据库 + SQL server数据库内置账户sa无法登录 SQL 检测java是否连接到SQL server数据库 SQL server数据库内置账户SA登 ...

最新文章

  1. flex和bison实例分析
  2. 项目管理六大制约因素_用PCTS理念做好项目管理规划(优秀项目管理者必知)...
  3. 倒计时小工具_送你3个倒数计日的小程序,让你不再遗忘重要事
  4. 凸二次规划(convex quadratic programming)问题
  5. 快手用户群体分析_抖音、快手竞品分析报告
  6. Matlab:完美涡旋光束
  7. 利用微信搜索抓取公众号文章(转载)
  8. 不敢相信!那些真实存在的机器人女友们!
  9. 云安全成下一个市场热点,三方云安全厂商出路在哪里?
  10. 用html5看板娘,记在nuxt.js中引入一个萌哒哒的看板娘(Live2d模型)
  11. 第一性原理 《禅与计算机程序设计艺术》 / 陈光剑
  12. oracle sqlplus建用户,Oracle用SQL Plus创建数据库表空间和用户
  13. 计算识别率的matlab代码,基于MATLAB神经网络图像识别的高识别率代码
  14. RHCSA考点-个人见解
  15. Python3,我用这种方式讲解python模块,80岁的奶奶都说能理解。建议收藏 ~ ~
  16. UIT创新科完成四川天翼“全球眼”定制化存储
  17. Chrome 浏览器最牛插件之一 Vimium
  18. Terraformation启动全球首个专注于生物多样性的碳融资森林加速器,以创建更多的全球土地恢复项目
  19. 将文件夹压缩成zip文件
  20. 计算机中的cnc代表什么意思,CNC是什么意思

热门文章

  1. android gps导航省电,一种GPS导航中省电的系统和方法与流程
  2. 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc
  3. 鸿蒙系统速度和ios,鸿蒙系统到底和苹果安卓有什么区别
  4. 飞线5根连接图_手机主板焊盘掉点飞线维修方法
  5. python怎么读取github_如何通过Python模拟登陆Github?
  6. 在线考试新入.html,JSP+SSM+MySql实现的在线考试系统毕设指导思路模板
  7. php 获取上周日期_php 获取上一周下一周的日期列表
  8. php 5.4 aws,亚马逊AWS.EC2:Ubuntu安装php与apache环境
  9. java hibernate 多对多_hibernate 多对多映射配置详解
  10. mysql主主同步修复