繁体   English   中英

从BizTalk执行SQL存储过程

[英]Execute SQL stored procedure from BizTalk

我在BizTalk编排中要完成三个任务

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

示例数据

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

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

更新

改写:任务是

  1. 如何使用传入XML消息中的参数从BizTalk业务流程中调用存储过程

  2. 如何从业务流程插入数据库表(并返回操作结果)

  3. 如何使用传入XML中的动态“ where”值条件进行更新

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

高级概述:

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

奖金:

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

注意事项:

  • SQL适配器不喜欢空节点(假设您正在使用SQL Server)。 确保将以NULL形式进入的节点设置为xsi:nil=true (使用Nil xsi:nil=true ),或者在目标中不存在该节点(使用Value Mapping ,或使用方法来删除空值)管道或助手类中的节点 )。
  • 其他适配器(例如Oracle或Db2)将面临自己的特殊挑战。 IMO,就可用功能和文档而言,sqlBinding是最好的选择。 如果您知道其他平台,则应该能够找出问题所在。
  • 除非您打算将XML存储在SQL Server中,否则避免发送XML参数。 换句话说,当您拥有BizTalk时,请勿使SQL Server切碎XML-BizTalk几乎可以肯定会做得更好(性能和开发方面)。
  • 如果要从SQL Server返回数据,请考虑使用强类型(如果过程结果集是作为普通的旧SELECT或通过OUTPUT参数返回的)或XML轮询(如果过程使用FOR XML返回结果集)。 除非您不希望处理该过程的返回数据,否则请避免使用普通的过程调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM