首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BizTalk执行SQL存储过程

问从BizTalk执行SQL存储过程
EN

Stack Overflow用户
提问于 2015-10-06 12:43:30
回答 1查看 4.8K关注 0票数 1

在我的BizTalk编排中,我有三个任务要做

  1. 使用动态参数执行存储过程
  2. 对DB进行插入
  3. 在DB中进行更新

示例数据

存储过程[databasename].[storedprocedurename] 'param1Value', 'param2Value'

表[databasename].[tablename] (id integer,desc nvarchar(50))

更新

重述:任务是

  1. 如何使用传入XML消息的参数从BizTalk编排中调用存储过程
  2. 如何从业务流程插入到DB表(并获得操作结果)
  3. 如何使用来自传入xml的动态“where”值条件进行更新
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-06 19:47:09

这里有完整的文档:使用BizTalk服务器在Server中执行存储过程

高级别概览:

  1. 创建存储过程(例如usp_Test)来执行插入/更新。包含将在WHERE子句中使用的参数。
  2. 使用Add->Add生成项->消费适配器服务为存储过程生成架构和绑定文件。
  3. 从消息创建到存储过程架构的映射
  4. 更新逻辑发送端口上的操作以匹配SP名称(usp_Test)
  5. 部署应用程序。
  6. 将物理发送端口的绑定从步骤2导入应用程序
  7. 将业务流程绑定到此发送端口(或在发送端口上创建过滤器,可能基于BTS.Operation)。
  8. 在您导入的发送端口上创建带有映射集的端口,并使用过滤器对业务流程进行筛选)。

奖金:

  1. 使用表类型在单个调用中传递多个插入
  2. 使用CompositeOperations调用多个过程/表

注意事项:

  • SQL不喜欢空节点(假设您使用的是Server)。确保一个应该作为NULL进入的节点被设置为xsi:nil=true (使用Nil函数),或者它不存在于目标中(使用Value Mapping函数,或者使用删除管道或助手类中的空节点的方法)。
  • 其他适配器(例如甲骨文或Db2 )将面临自己的特殊挑战。在可用的功能和文档方面,sqlBinding是最适合使用的。如果你知道你的另一个平台,你应该能够找出问题。
  • 除非您打算将XML存储在Server中,否则请避免发送XML参数。换句话说,当您有BizTalk为您做时,不要让Server分解XML -- BizTalk几乎肯定会做得更好(性能和开发方面的)。
  • 如果您从Server返回数据,请考虑使用强类型(如果您的过程结果集作为一个普通的旧SELECT或通过OUTPUT参数返回)或XML轮询(如果您的过程使用FOR XML返回一个结果集)。避免普通的过程调用,除非您不希望处理该过程中的返回数据。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32970296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档