簡體   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