zoukankan      html  css  js  c++  java
  • [BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法

    使用UpdateGram更新表中的数据

    目录
    • 开发环境
    • 开发目的
    • 开发过程
    • 总结
    • 问题

    开发环境

    • Windows2003 SP2
    • SqlServer 2005
    • BizTalik2006
    • VisualStudio2005

    开发目的

    • 学习在SqlAdapter的UpdateGram中,使用Update用法
    • 验证Update中特殊字符的赋值的方法

    开发过程

    1. 新建项目后,点击"Add Generated Items",启动生成向导。
      BizTalk SqlAdapter UpdateGram

    2. 选中"Add Adapter Metadata"的"Add Adapter Metadata"后,点击确定
      BizTalk SqlAdapter UpdateGram

    3. 选择已经注册了的Adapter,我这里只有Sql。然后配置要连接的数据库。
      BizTalk SqlAdapter UpdateGram

    4. 接下来要求您设置数据库连接字符串。
      BizTalk SqlAdapter UpdateGram

    5. 在弹出的数据库配置对话框中,配置数据连接方式。
      BizTalk SqlAdapter UpdateGram

    6. 配置好后,进行下一步。
      BizTalk SqlAdapter UpdateGram

    7. 配置生成的Schema的Namespace,端口类型,根节点。
      Namespace:自己输入喜欢的名称
      Port Type:我要用UpdateGram,所以用SendPort
      Root Element Name:请求、响应的根节点
      BizTalk SqlAdapter UpdateGram

    8. 选择我期待已久的UpdateGram
      BizTalk SqlAdapter UpdateGram

    9. 选择我要实现的Update功能,要操作的表及字段(这些字段可以在后面的Schema中修改)
      BizTalk SqlAdapter UpdateGram

    10. Finish了!
      BizTalk SqlAdapter UpdateGram

    11. 向导开始自动生成代码了
      BizTalk SqlAdapter UpdateGram

    12. 生成后,在项目中会多出下面两个文件(不用解译了吧)
      BizTalk SqlAdapter UpdateGram

    13. 打开流程文件,开始添加一个端口
      BizTalk SqlAdapter UpdateGram

    14. 启动了端口配置向导
      BizTalk SqlAdapter UpdateGram

    15. 输入端口名称
      BizTalk SqlAdapter UpdateGram

    16. 选择由向导自动生成的端口
      BizTalk SqlAdapter UpdateGram

    17. 配置端口的绑定信息
      BizTalk SqlAdapter UpdateGram

    18. 又Finish了
      BizTalk SqlAdapter UpdateGram

    19. 配置结束后的效果
      BizTalk SqlAdapter UpdateGram

    20. 直接在流程中添加接收、发送,然后与端口进行连接
      添加后会自动生成对应要使用到的消息Message_1,Message_2(先不要改名,后面会用到)
      BizTalk SqlAdapter UpdateGram

    21. 当然,还要有一个流程的接收端口
      配置一个接收端口(如果配置不用多讲了吧)
      添加一个接收,然后与刚刚添加的接收端口做连接
      把接收的Active属性设置为Tree(启用状态)
      接收的消息为了简单,直接用20步时,自动生成的Message_1
      BizTalk SqlAdapter UpdateGram

    22. 添加物理发送端口
      在BizTalk Explore中,添加一个发送端口
      BizTalk SqlAdapter UpdateGram

    23. 端口类型设置为发送请求并接收响应
      BizTalk SqlAdapter UpdateGram

    24. 设置发送端口名称
      BizTalk SqlAdapter UpdateGram

    25. 配置发送端口的地址
      ConectionString:可以用配置向导自动生成
      Namespace:在7中设置的Namespace
      Response Root:在7中设置的Response Root Name
      BizTalk SqlAdapter UpdateGram

    26. 配置完成后的效果
      BizTalk SqlAdapter UpdateGram

    27. 另忘了还要设置发送端口的Pipeline,全部用Xml***的
      BizTalk SqlAdapter UpdateGram

    28. 打开项目中的Schema
      BizTalk SqlAdapter UpdateGram

    29. 这里发现,ID的位置有问题,不应该在After中,把ID移到了Before中
      BizTalk SqlAdapter UpdateGram

      至此,完成上面所有的操作后,启动BizTalk部署,并完成流程的绑定、启动过程(具体步骤略)。

    30. 生成一个Schema的实例,并做了一个Sample(XmlSpy的显示效果)如下
      BizTalk SqlAdapter UpdateGram

    31. 在目的表中,添加下面的数据
      注意第一条,与30中的Before相对应
      BizTalk SqlAdapter UpdateGram

    32. 将30中的xml,发到流程的接收位置处
      注:接收位置我配置了一个文件接收端口,这是为了测试方便。配置方法略。
      观察表中的数据表发,发现数据已经按照要求,被更新了。
      BizTalk SqlAdapter UpdateGram

    33. 如果输入的Xml中,Before数据与表中数据对应不上,会报下面的错误
      BizTalk SqlAdapter UpdateGram

      事件类型: 警告
      事件来源: BizTalk Server 2006
      事件种类: BizTalk Server 2006
      事件 ID: 5740
      日期: 2007-11-5
      事件: 16:39:26
      用户: N/A
      计算机: BIZTALK001
      描述:
      The adapter "SQL" raised an error message. Details "HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".

    34. 错误2
      BizTalk SqlAdapter UpdateGram

      事件类型: 警告
      事件来源: BizTalk Server 2006
      事件种类: BizTalk Server 2006
      事件 ID: 5743
      日期: 2007-11-5
      事件: 16:39:26
      用户: N/A
      计算机: BIZTALK001
      描述:
      The adapter failed to transmit message going to send port "UpdateGram_Out" with URL "SQL://BIZTALK001/Test01/". It will be retransmitted after the retry interval specified for this Send Port. Details:"HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".

    总结

    • 如果对BizTalk已经比较熟悉,全部过程不会超过30分钟
    • 更新数据中包含的特殊字符,请用XML的转意字符串表求(如:"'&><)
    • 字段中的换行都被替换掉了(还需要继续研究)
    • 如果没有After的定义,那么此操作将把该记录删除(实现Delete操作)
    • 如果没有Before,只有After,就实现了Insert操作
    • Before中的字段不用全部显示出来(比如只有一个ID也可以)
    • Before中的字段如果要求为Null,那么也同样不用标记出来
    • 此操作就象"update table set f1=v1, f2=v2, f3=v3,... where f1=v01 and f2=v02 and ..."

    问题

    • 换行如何解决?
    • 出现的两个错误,如何解决?
    • 如何批量Update?

    特此感谢Kent在技术上的支持!

    转载请注明作者及出处

  • 相关阅读:
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(中篇)
    2-4-2-6HTML文件标签
    2-4-1-4——2-4-1-5HTML快速入门
    2-4-1-1——2-4-1-3HTML介绍
    redis
    2-1-2-06 获取class对象的三种方式
    2-1-2-05反射概述
    Java面试题
    servlet和http请求协议
  • 原文地址:https://www.cnblogs.com/xuzhong/p/950698.html
Copyright © 2011-2022 走看看