[BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
生活随笔
收集整理的這篇文章主要介紹了
[BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用UpdateGram更新表中的數據
目錄
新建項目后,點擊"Add Generated Items",啟動生成向導。
選中"Add Adapter Metadata"的"Add Adapter Metadata"后,點擊確定
選擇已經注冊了的Adapter,我這里只有Sql。然后配置要連接的數據庫。
接下來要求您設置數據庫連接字符串。
在彈出的數據庫配置對話框中,配置數據連接方式。
配置好后,進行下一步。
配置生成的Schema的Namespace,端口類型,根節點。
Namespace:自己輸入喜歡的名稱
Port Type:我要用UpdateGram,所以用SendPort
Root Element Name:請求、響應的根節點
選擇我期待已久的UpdateGram
選擇我要實現的Update功能,要操作的表及字段(這些字段可以在后面的Schema中修改)
Finish了!
向導開始自動生成代碼了
生成后,在項目中會多出下面兩個文件(不用解譯了吧)
打開流程文件,開始添加一個端口
啟動了端口配置向導
輸入端口名稱
選擇由向導自動生成的端口
配置端口的綁定信息
又Finish了
配置結束后的效果
直接在流程中添加接收、發送,然后與端口進行連接
添加后會自動生成對應要使用到的消息Message_1,Message_2(先不要改名,后面會用到)
當然,還要有一個流程的接收端口
配置一個接收端口(如果配置不用多講了吧)
添加一個接收,然后與剛剛添加的接收端口做連接
把接收的Active屬性設置為Tree(啟用狀態)
接收的消息為了簡單,直接用20步時,自動生成的Message_1
添加物理發送端口
在BizTalk Explore中,添加一個發送端口
端口類型設置為發送請求并接收響應
設置發送端口名稱
配置發送端口的地址
ConectionString:可以用配置向導自動生成
Namespace:在7中設置的Namespace
Response Root:在7中設置的Response Root Name
配置完成后的效果
另忘了還要設置發送端口的Pipeline,全部用Xml***的
打開項目中的Schema
這里發現,ID的位置有問題,不應該在After中,把ID移到了Before中
至此,完成上面所有的操作后,啟動BizTalk部署,并完成流程的綁定、啟動過程(具體步驟略)。
生成一個Schema的實例,并做了一個Sample(XmlSpy的顯示效果)如下
在目的表中,添加下面的數據
注意第一條,與30中的Before相對應
將30中的xml,發到流程的接收位置處
注:接收位置我配置了一個文件接收端口,這是為了測試方便。配置方法略。
觀察表中的數據表發,發現數據已經按照要求,被更新了。
如果輸入的Xml中,Before數據與表中數據對應不上,會報下面的錯誤
事件類型: 警告
事件來源: 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>".
錯誤2
事件類型: 警告
事件來源: 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>".
目錄
- 開發環境
- 開發目的
- 開發過程
- 總結
- 問題
開發環境
- Windows2003 SP2
- SqlServer 2005
- BizTalik2006
- VisualStudio2005
開發目的
- 學習在SqlAdapter的UpdateGram中,使用Update用法
- 驗證Update中特殊字符的賦值的方法
開發過程
Namespace:自己輸入喜歡的名稱
Port Type:我要用UpdateGram,所以用SendPort
Root Element Name:請求、響應的根節點
添加后會自動生成對應要使用到的消息Message_1,Message_2(先不要改名,后面會用到)
配置一個接收端口(如果配置不用多講了吧)
添加一個接收,然后與剛剛添加的接收端口做連接
把接收的Active屬性設置為Tree(啟用狀態)
接收的消息為了簡單,直接用20步時,自動生成的Message_1
在BizTalk Explore中,添加一個發送端口
ConectionString:可以用配置向導自動生成
Namespace:在7中設置的Namespace
Response Root:在7中設置的Response Root Name
至此,完成上面所有的操作后,啟動BizTalk部署,并完成流程的綁定、啟動過程(具體步驟略)。
注意第一條,與30中的Before相對應
注:接收位置我配置了一個文件接收端口,這是為了測試方便。配置方法略。
觀察表中的數據表發,發現數據已經按照要求,被更新了。
事件類型: 警告
事件來源: 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>".
事件類型: 警告
事件來源: 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在技術上的支持!
轉載請注明作者及出處
轉載于:https://www.cnblogs.com/xuzhong/archive/2007/11/06/950698.html
總結
以上是生活随笔為你收集整理的[BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP实现多文件上传
- 下一篇: 吴恩达深度学习编程作业汇总