使用 BizTalk Server 在SQL Server中叫用 Table-Valued 函式
您可以使用 SQL 配接器搭配 BizTalk Server,在 SQL Server 中叫用資料表值函式。 配接器會將資料表值函式公開為可直接在SQL Server上叫用的作業。 如需配接器如何支援資料表值函式的詳細資訊,請參閱使用 SQL 配接器在 SQL Server 中執行 Table-Valued 函式。 如需叫用資料表值函式之 SOAP 訊息結構的相關資訊,請參閱 程式和函式的訊息架構。
必要條件
在執行 SQL 配接器並SQL Server的電腦上設定MSDTC。
在SQL Server資料庫上叫用資料表值函式
搭配BizTalk Server使用 SQL 配接器在SQL Server資料庫上執行作業,牽涉到使用 SQL 配接器開發 BizTalk 應用程式的建置組塊中所述的程式性工作。 若要在 SQL Server中叫用資料表值函式,這些工作包括:
建立 BizTalk 專案,並針對您想要在 SQL Server中叫用的資料表值函式產生架構。
在 BizTalk 專案中建立訊息,以便從SQL Server傳送和接收訊息。
建立協調流程以叫用SQL Server上的作業。
建置和部署 BizTalk 專案。
藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。
啟動 BizTalk 應用程式。
本主題提供執行這些工作的指示。
產生架構
本主題示範如何使用 SQL 配接器搭配 BizTalk Server,在 SQL Server中叫用資料表值函式。 若要示範這項作業,請在本主題中執行 TVF_EMPLOYEE 函式。 此函式會採用員工的指定做為參數,並以該指定傳回所有員工記錄,做為資料表類型。 Employee 資料表和函式的建立方式是執行範例所提供的腳本。 如需腳本的詳細資訊,請參閱 SQL 配接器的範例。
為了示範如何叫用資料表值函式,會針對資料表值函式產生架構TVF_EMPLOYEE。 您必須建立 BizTalk 專案,並使用取用配接器服務增益集來產生架構。 如需如何產生架構的詳細資訊,請參閱使用 SQL 配接器擷取 Visual Studio 中SQL Server作業的中繼資料。
定義訊息和訊息類型
您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,也就是對應架構所定義的類型。 現在,建立協調流程的訊息,並將其連結至您在上一個步驟中產生的架構。
將協調流程新增至 BizTalk 專案。 從 方案總管,以滑鼠右鍵按一下 BizTalk 專案名稱,指向 [新增],然後按一下 [新增專案]。 輸入 BizTalk 協調流程的名稱,然後按一下 [ 新增]。
如果 BizTalk 專案尚未開啟,請開啟 [協調流程檢視] 視窗。 若要這樣做,請按一下 [ 檢視],指向 [其他視窗],然後按一下 [ 協調流程檢視]。
在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。
以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。
在Message_1的 [屬性] 窗格中,執行下列動作:
使用 作法 識別碼 輸入 Request
訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [TableFunctions.TableValuedFunction_dbo]。TVF_EMPLOYEE,其中 TableFunctions 是您 BizTalk 專案的名稱。 TableValuedFunction_dbo是針對 TVF_EMPLOYEE 函式產生的架構。 重複步驟 2 以建立新的訊息。 在新訊息的 [ 屬性 ] 窗格中,執行下列動作:
使用 作法 識別碼 輸入 Response
訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [TableFunctions.TableValuedFunction_dbo]。TVF_EMPLOYEEResponse。
設定協調流程
建立 BizTalk 協調流程,以使用BizTalk Server在SQL Server上執行作業。 在此協調流程中,您會在定義的接收位置卸載要求訊息。 SQL 配接器會取用此訊息,並將它傳遞給SQL Server。 來自SQL Server的回應會儲存至另一個位置。 您必須包含傳送和接收圖形,才能將訊息分別傳送至SQL Server和接收回應。 叫用資料表值函式的範例協調流程如下所示:
函式的協調流程
新增訊息圖形
輸入每個訊息圖形的下列屬性。 Shape 資料行中列出的名稱是訊息圖形的名稱,如剛才提到的協調流程所示。
圖形 | 圖形類型 | 屬性 |
---|---|---|
ReceiveMessage | 接收 | - 將 名稱 設定為 ReceiveMessage - 將 Activate 設定為 True |
SendMessage | 傳送 | - 將 [名稱] 設定為 SendMessage |
ReceiveResponse | 接收 | - 將 Name 設定為 ReceiveResponse - 將 Activate 設定為 False |
SendResponse | 傳送 | - 將 [名稱] 設定為 SendResponse |
新增埠
輸入每個邏輯埠的下列屬性。 [埠] 資料行中所列的名稱是協調流程中顯示的埠名稱。
連接埠 | 屬性 |
---|---|
MessageIn | - 將 識別碼 設定為 MessageIn - 將 類型 設定為 MessageInType - 將 通訊模式 設定為 單向 - 將 通訊方向 設定為 接收 |
LOBPort | - 將 識別碼 設定為 LOBPort - 將 Type 設定為 LOBPortType - 將 通訊模式 設定為 Request-Response - 將 通訊方向 設定為 Send-Receive |
ResponseOut | - 將 識別碼 設定為 ResponseOut - 將 類型 設定為 ResponseOutType - 將 通訊模式 設定為 單向 - 設定要傳送的通訊方向 |
輸入動作圖形的訊息,並將其連線至埠
下表指定屬性及其值,您應該設定為指定動作圖形的訊息,以及將訊息連結至埠。 Shape 資料行中列出的名稱是訊息圖形的名稱,如先前所述的協調流程所示。
圖形 | 屬性 |
---|---|
ReceiveMessage | - 將 訊息 設定為 要求 - 將 作業 設定為 MessageIn.TVF.Request |
SendMessage | - 將 訊息 設定為 要求 - 將 作業 設定為 LOBPort.TVF.Request |
ReceiveResponse | - 將 訊息 設定為 回應 - 將作業 設定為 LOBPort.TVF.Response |
SendResponse | - 將 訊息 設定為 回應 - 將 作業 設定為 ResponseOut.TVF.Request |
指定這些屬性之後,訊息圖形和埠就會連線,而且您的協調流程已完成。
現在,建置 BizTalk 解決方案,並將其部署至BizTalk Server。 如需詳細資訊,請參閱 建置和執行協調流程。
設定 BizTalk 應用程式
部署 BizTalk 專案之後,您稍早建立的協調流程會列在 [BizTalk Server 管理主控台] 的 [協調流程] 窗格中。 您必須使用 BizTalk Server 管理主控台來設定應用程式。 如需逐步解說,請參閱逐步解說 :部署基本 BizTalk 應用程式。
設定應用程式牽涉到:
選取應用程式的主機。
將您在協調流程中建立的埠對應至 BizTalk Server 管理主控台中的實體埠。 針對此協調流程,您必須:
定義硬碟上的位置,以及您將卸載要求訊息的對應檔案埠。 BizTalk 協調流程會取用要求訊息,並將其傳送至SQL Server資料庫。
定義硬碟上的位置和對應的檔案埠,BizTalk 協調流程會卸載包含來自SQL Server資料庫的回應訊息。
定義實體 WCF-Custom 或 WCF-SQL 傳送埠,以將訊息傳送至SQL Server資料庫。 您也必須在傳送埠中指定動作。 如需如何建立埠的詳細資訊,請參閱 手動設定實體埠系結至 SQL 配接器。
注意
使用取用配接器服務 BizTalk 專案增益集產生架構也會建立系結檔案,其中包含要針對這些埠設定的埠和動作的相關資訊。 您可以從 BizTalk Server 管理主控台匯入此系結檔案,以建立輸出呼叫的傳送埠 () ,或針對輸入呼叫) 接收埠 (。 如需詳細資訊,請參閱 使用埠系結檔案設定實體埠系結以使用 SQL 配接器。
啟動應用程式
啟動 BizTalk 應用程式,以叫用SQL Server資料庫中的資料表值函式。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程。
在此階段,請確定:
要接收協調流程要求訊息的 FILE 接收埠正在執行。
從協調流程接收回應訊息的 FILE 傳送埠正在執行中。
執行 WCF-Custom 或 WCF-SQL 傳送埠,以將訊息傳送至SQL Server資料庫。
作業的 BizTalk 協調流程正在執行。
執行作業
執行應用程式之後,您必須將要求訊息卸載至 FILE 接收位置。 要求訊息的架構必須符合您稍早產生的TVF_EMPLOYEE資料表值函式架構。 例如,叫用TVF_EMPLOYEE函式的要求訊息為:
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/TableValuedFunctions/dbo">
<emp_desig>Tester</emp_desig>
</TVF_EMPLOYEE>
此要求訊息會叫用 TVF_EMPLOYEE 函式,以擷取指定為 「Tester」 的員工記錄。 如需使用 SQL 配接器叫用資料表值函式之要求訊息架構的詳細資訊,請參閱程式和函式 SQL Server的訊息架構。
注意
如果您未指定參數的值,配接器會在內部使用 DEFAULT 關鍵字執行函式,這表示介面卡會傳遞參數的預設值來執行函式,如果函式定義中可用的話。
協調流程會取用訊息,並將其傳送至SQL Server資料庫。 來自SQL Server資料庫的回應會儲存在協調流程中定義為一部分的其他 FILE 位置。 例如,上述要求訊息SQL Server資料庫的回應如下:
<?xml version="1.0" encoding="utf-8" ?>
<TVF_EMPLOYEEResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableValuedFunctions/dbo">
<TVF_EMPLOYEEResult>
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/TableFunctionReturnTables/dbo">
<Employee_ID>10499</Employee_ID>
<Name>John</Name>
<Designation>Tester</Designation>
<Salary>999999.00</Salary>
<Last_Modified>AAAAAAAAJBM=</Last_Modified>
</TVF_EMPLOYEE>
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/TableFunctionReturnTables/dbo">
......
......
</TVF_EMPLOYEE>
......
......
</TVF_EMPLOYEEResult>
</TVF_EMPLOYEEResponse>
最佳做法
部署並設定 BizTalk 專案之後,您可以將組態設定匯出至稱為系結檔案的 XML 檔案。 產生系結檔案之後,您可以從檔案匯入組態設定,因此您不需要為相同的協調流程建立傳送埠和接收埠等專案。 如需系結檔案的詳細資訊,請參閱 重複使用配接器系結。