SQL Adapter是用來當作Biztalk與SQL Server之間的橋樑,可以透過它進行資料庫的異動。這裡紀錄一下在Biztalk中如何使用SQL Adapter以Polling資料庫中的資料,以隨時接收資料庫中新增的資料。
SQL Server的處理
基本上,可以使用Sql Statement或是Stored Procedure。但使用Stored Procedure比較易於管理,所以這裡使用的都是Stored Procedure。
建立Stored Procedure
SQL Adapter只能處理回傳XML的Stored Procedure,所以Select
語句要使用MS SQL的XML語法,也就是加個FOR xml auto
在句尾。如以下的Example。
SELECT [ColA]
,[ColB]
,[IsDone]
FROM LabTable
WHERE IsDone = 0
FOR xml auto
這個語法將讀取到的資料轉換成XML的格式
<LabTable ColA="AAA" ColB="BBB" IsDone="0" />
另外,因應Biztalk的SQL Adapter Schema產生器的需求,需要知道各欄位型別的定義,所以在Select語句的最後面加上xmldata
語法。最後,Select語句會是以下這種樣子
SELECT [ColA]
,[ColB]
,[IsDone]
FROM LabTable
WHERE IsDone = 0
FOR xml auto, xmldata
當Schema產生完成後,再把, xmldata
拿掉
Orchestration處理
在Biztalk的開發專案中,透過專案右鍵選單中,選取Add Generated Items...
選取Add Adapter Metadata
template,
下一步,選擇所使用的Adapter,選SQL
就對了
下一步,依據自己的環境設定Connection String
下一步,填入Target namespace
以及document root element name
,這會用在XML的定義上。
下一步,選擇Stored Procedure
下一步,選取所使用的Stored Procedure,並按下Generate
按鈕以產生script
最後,按下Finish
按鈕以結束SQL Adapter Schema產生器
產生完Schema後,記得要把Stored Procedure中的, xmldata
拿掉
這個產生器會產生一個XML Schema
以及一個Orchestration檔,在Orchestration檔中,已經定義好Port Type
以供Receive Port使用。另外還定義好一個Multi-part Message Type
,型別則是剛才所產生的Schema。
在Orchestration中,就可以使用該Schema處理DB得到的資料。
實體Receive Port的處理
當Orchestration開發完並部署到Biztalk Server上後,還需要設定Receive Location
以實際的連結到DB。
新建立一個One-Way Receive Location
,並選擇Transport Type為SQL
,Receive pipeline選擇XMLReceive
。
按下Configure...
按鈕,會跳出一個對話視窗,以進行SQL相關參數設定。
按下Connection String旁的按鈕,會出現一個連線字串設定Wizard。設定完連線設定後,該Wizard會將Connection String
填入,並帶出URI
的設定
再按下SQL Command旁的按鈕,會跳出另一個對話視窗。
透過選取Project,以及該Project中的Schema,可以取得Schema的Target Namespace及Root Element Name的資訊,還有所要執行的Stored Procedure的設定。
這樣,SQL Adapter才算完整的設定完成。這時候,就可以把資料塞入DB中,以測試由DB的資料驅動Biztalk的流程運作。