共用方式為


使用 BizTalk Server 從SQL Server接收強型別輪詢型資料變更訊息

您可以將 SQL 配接器設定為接收來自SQL Server的強型別輪詢訊息。 您可以指定配接器執行的輪詢語句來輪詢資料庫。 輪詢語句可以是 SELECT 語句或傳回結果集的預存程式。

您必須在想要將輪詢訊息中的元素對應至任何其他架構的案例中使用強型別輪詢。 您想要對應至的架構可能是針對SQL Server上的另一個作業。 例如,您可以將輪詢訊息中的特定元素對應至另一個資料表上插入作業的架構。 因此,輪詢訊息中的值可作為 Insert 作業的參數。 在更簡單的案例中,您可以將強型別輪詢訊息的架構對應至只儲存資訊的架構檔案。

重要

如果您想要在單一 BizTalk 應用程式中有多個輪詢作業,您必須在連線 URI 中指定 InboundID 連線屬性,使其成為唯一的一部分。 使用唯一的連線 URI,您可以建立多個接收埠來輪詢相同的資料庫,甚至是資料庫中的相同資料表。 如需詳細資訊,請參閱 使用 Biztalk Server 從 SQL 接收多個接收埠之間的輪詢訊息

如需配接器如何支援強型別輪詢的詳細資訊,請參閱 輪詢的支援。 如需強型別輪詢之訊息架構的詳細資訊,請參閱 輪詢和 TypedPolling 作業的訊息架構

本主題如何示範強型別輪詢

本主題示範如何使用強型別輪詢,將輪詢訊息對應至另一個架構。 本主題說明如何建立 BizTalk 專案並產生 TypedPolling 作業的架構。 產生 TypedPolling 作業的架構之前,您必須執行下列動作:

  • 您必須將 InboundID 指定為連線 URI 的一部分。

  • 您必須為 PollingStatement 系結屬性指定輪詢語句。

    在輪詢語句中,執行下列作業:

  • 從 Employee 資料表中選取所有資料列。

  • 執行預存程式 (MOVE_EMP_DATA) 將所有記錄從 Employee 資料表移至 EmployeeHistory 資料表。

  • 執行預存程式 (ADD_EMP_DETAILS) ,將新記錄新增至 Employee 資料表。 此程式會採用員工名稱、指定和薪資作為參數。

    若要執行這些作業,您必須為 PollingStatement 系結屬性指定下列專案:

SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000   

由於您為 TypedPolling 作業產生架構,因此架構為強型別,並包含輪詢訊息中將包含的所有元素。

作為相同 BizTalk 專案的一部分,您可以新增另一個架構檔案,例如 EmployeeDetails.xsd。 EmployeeDetails.xsd 的架構如下所示:

<?xml version="1.0" encoding="utf-16" ?>   
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://Typed_Polling.EmployeeDetails" elementFormDefault="qualified" targetNamespace="http://Typed_Polling.EmployeeDetails" xmlns:xs="http://www.w3.org/2001/XMLSchema">  
  <xs:element name="EmployeeDetails">  
    <xs:complexType>  
      <xs:sequence>  
        <xs:element name="Employee_Info" type="xs:string" />   
        <xs:element name="Employee_Profile" type="xs:string" />   
        <xs:element name="Employee_Performance" type="xs:string" />   
      </xs:sequence>  
    </xs:complexType>  
  </xs:element>  
</xs:schema>  

您也會將 BizTalk Mapper 新增至專案,將來自 Employee 資料表的專案對應 (收到為輪詢訊息) 至 EmployeeDetails.xsd 架構中的元素。 在對應中,您會結合輪詢訊息中的一或多個元素,並將它對應至 EmployeeDetails 架構中的單一元素。 您可以使用 字串串 連運算質來執行此動作。

最後,在 BizTalk 專案中,符合 EmployeeDetails.xsd 架構的檔案會卸載至 FILE 傳送埠。

使用 SQL 配接器系結屬性設定具型別輪詢

下表摘要說明您用來設定配接器以接收資料變更訊息的 SQL 配接器系結屬性。 除了PollingStatement系結屬性以外,在 BizTalk Server 管理主控台中設定接收埠時,需要本節中所列的所有其他系結屬性。 您必須先指定 PollingStatement 系結屬性,才能產生 TypedPolling 作業的架構。

注意

針對具類型的輪詢,您必須在產生架構時指定 PollingStatement biding 屬性。 您可以選擇在產生架構時指定其他系結屬性,即使它們並非必要也一樣。 如果您確實指定系結屬性,取用配接器服務增益集產生的埠系結檔案也會包含您為系結屬性指定的值。 您稍後可以在 BizTalk Server 管理主控台中匯入此系結檔案,以建立已設定系結屬性的 WCF-custom 或 WCF-SQL 接收埠。 如需使用系結檔案建立埠的詳細資訊,請參閱 使用埠系結檔案設定實體埠系結以使用 SQL 配接器

Binding 屬性 Description
InboundOperationType 指定您要執行 PollingTypedPollingNotification 輸入作業。 預設值為 Polling。 若要接收強型別輪詢訊息,請將此設定為 TypedPolling
PolledDataAvailableStatement 指定配接器執行的 SQL 語句,以判斷是否有任何資料可供輪詢。 SQL 語句必須傳回包含資料列和資料行的結果集。 只有在資料列可用時,才會執行 針對 PollingStatement 系結屬性指定的 SQL 語句。
PollingIntervalInSeconds 指定間隔,以秒為單位,SQL 配接器會執行 針對 PolledDataAvailableStatement 系結屬性指定的語句。 預設值為 30 秒。 輪詢間隔會決定連續輪詢之間的時間間隔。 如果語句是在指定的間隔內執行,配接器會等候間隔中的剩餘時間。
PollingStatement 指定要輪詢SQL Server資料庫資料表的 SQL 語句。 您可以指定輪詢語句的簡單 SELECT 語句或預存程式。 預設值是 null。 您必須指定 PollingStatement 的值,才能啟用輪詢。 只有在有資料可供輪詢時,才會執行輪詢語句,這是由 PolledDataAvailableStatement 系結屬性所決定。 您可以指定以分號分隔的任意數目 SQL 語句。

重要: 針對 TypedPolling,您必須先指定這個系結屬性,才能產生中繼資料。
PollWhileDataFound 指定 SQL 配接器是否忽略輪詢間隔,並持續執行 針對 PolledDataAvailableStatement 系結屬性指定的 SQL 語句,如果正在輪詢的資料表中有資料可用。 如果資料表中沒有可用的資料,配接器會還原為在指定的輪詢間隔執行 SQL 語句。 預設值為 false

如需這些屬性的更完整描述,請參閱閱讀 BizTalk Adapter for SQL Server 配接器系結屬性。 如需如何使用 SQL 配接器輪詢SQL Server的完整描述,請進一步閱讀。

如何從SQL Server資料庫接收強型別的資料變更訊息

使用 SQL 配接器搭配BizTalk Server在SQL Server資料庫上執行作業,牽涉到建置組塊中所述的程式工作,以使用 SQL 配接器開發 BizTalk 應用程式。 若要將配接器設定為接收強型別的資料變更訊息,這些工作包括:

  1. 建立 BizTalk 專案,然後產生 TypedPolling 作業的架構。 產生架構時,您必須指定 InboundID 連接屬性和 PollingStatement 系結屬性。 例如,具有所指定輸入識別碼的連線 URI 如下所示:

    mssql://mysqlserver//mysqldatabase?InboundID=mydatabaseId  
    
  2. 在 BizTalk 專案中建立訊息,以接收來自SQL Server資料庫的訊息。

  3. 建立協調流程以接收來自SQL Server資料庫的訊息,並將其儲存至資料夾。

  4. 在 BizTalk 專案中新增架構,例如 EmployeeDetails.xsd。

  5. 新增 BizTalk 對應程式,將輪詢訊息的架構對應至 EmployeeDetails.xsd 架構。

  6. 建置和部署 BizTalk 專案。

  7. 藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。

    重要

    針對輸入輪詢案例,您必須一律設定單向 WCF-Custom 或 WCF-SQL 接收埠。 輸入作業不支援雙向 WCF-Custom 或 WCF-SQL 接收埠。

  8. 啟動 BizTalk 應用程式。

    本主題提供執行這些工作的指示。

根據本主題的範例

以本主題為基礎的範例 TypedPolling 隨附于 BizTalk 配接器套件。 如需詳細資訊,請參閱 SQL 配接器的範例

產生架構

您必須產生 TypedPolling 作業的架構。 如需如何產生架構的詳細資訊,請參閱使用 SQL 配接器在 Visual Studio 中擷取SQL Server作業的中繼資料。 產生架構時,請執行下列工作。

  1. 指定連線 URI 時,請指定 InboundID 連線屬性。 針對本主題,您可以將 InboundID 指定為 Employee。 如需連線 URI 的詳細資訊,請參閱建立SQL Server連線 URI

  2. 指定 PollingStatement 系結屬性的值。 如需此系結屬性的詳細資訊,請參閱閱讀 BizTalk Adapter for SQL Server配接器系結屬性

    如需如何指定系結屬性的指示,請參閱 設定 SQL 配接器的系結屬性

  3. 選取合約類型作為 服務 (輸入作業)

  4. 產生 TypedPolling 作業的架構。

定義訊息和訊息類型

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 產生架構之後,您必須從 BizTalk 專案的協調流程檢視將它連結到訊息。

針對本主題,您必須建立一則訊息,以接收來自SQL Server資料庫的訊息。

執行下列步驟來建立訊息,並將其連結至架構。

  1. 將協調流程新增至 BizTalk 專案。 從方案總管中,以滑鼠右鍵按一下 BizTalk 專案名稱,指向 [新增],然後按一下 [新增專案]。 輸入 BizTalk 協調流程的名稱,然後按一下 [ 新增]。

  2. 如果 BizTalk 專案尚未開啟,請開啟協調流程檢視視窗。 按一下 [ 檢視],指向 [其他 Windows],然後按一下 [ 協調流程檢視]。

  3. 在 [ 協調流程檢視]中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。

  4. 以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。

  5. Message_1的 [屬性]窗格中,執行下列動作:

    使用 作法
    識別碼 輸入 PollingMessage
    訊息類型 從下拉式清單中展開 [ 架構],然後選取 [Typed_Polling.TypedPolling_Employee.TypedPolling],其中 Typed_Polling 是您 BizTalk 專案的名稱。 TypedPolling_Employee針對 TypedPolling 作業產生的架構。

設定協調流程

您必須建立 BizTalk 協調流程,以使用BizTalk Server從SQL Server資料庫接收輪詢型資料變更訊息。 在此協調流程中,配接器會接收指定輪詢語句的輪詢訊息。 BizTalk 對應程式接著會將輪詢訊息架構對應至 EmployeeDetails.xsd 架構。 接著,對應的訊息會儲存至 FILE 位置。 從SQL Server資料庫接收強型別輪詢訊息的一般協調流程會包含:

  • 接收和傳送圖形以接收來自SQL Server的訊息,並分別傳送至 FILE 埠。

  • 單向接收埠,可從SQL Server接收訊息。

    重要

    針對輸入輪詢案例,您必須一律設定單向接收埠。 輸入作業不支援雙向接收埠。

  • 單向傳送埠,將輪詢回應從SQL Server資料庫傳送至資料夾。

  • BizTalk 對應程式,將輪詢訊息的架構對應至任何其他架構。

    範例協調流程如下所示。

    強型別輪詢協調流程

新增訊息圖形

請確定您為每個訊息圖形指定下列屬性。 Shape 資料行中列出的名稱是訊息圖形的名稱,如剛才提及的協調流程所示。

圖形 圖形類型 屬性
ReceiveMessage 接收 - 將 [名稱 ] 設定為 ReceiveMessage

- 將 Activate 設定為 True
SaveMessage 傳送 - 將 [名稱 ] 設定為 SaveMessage

新增埠

請確定您為每個邏輯埠指定下列屬性。 [埠] 資料行中列出的名稱是協調流程中顯示的埠名稱。

連接埠 屬性
SQLReceivePort - 將 識別碼 設定為 SQLReceivePort

- 將 類型 設定為 SQLReceivePortType

- 將 通訊模式 設定為 單向

- 將 通訊方向 設定為 接收
SaveMessagePort - 將 識別碼 設定為 SaveMessagePort

- 將 類型 設定為 SaveMessagePortType

- 將 通訊模式 設定為 單向

- 設定要傳送的通訊方向

輸入動作圖形的訊息並聯機到埠

下表指定屬性及其值,您應該設定為指定動作圖形的訊息,以及將訊息連結至埠。 Shape 資料行中列出的名稱是訊息圖形的名稱,如先前所述的協調流程所示。

圖形 屬性
ReceiveMessage 訊息 設定為 PollingMessage

將作業設定為SQLReceivePort.TypedPolling.Request
SaveMessage 訊息 設定為 PollingMessage

作業 設定為 SaveMessagePort.TypedPolling.Request

指定這些屬性之後,訊息圖形和埠就會連接。

新增 BizTalk 對應程式

您必須將 BizTalk 對應程式新增至協調流程,以將輪詢訊息架構對應至 EmployeeDetails.xsd 架構。 在 BizTalk Server 管理主控台中,您將使用此 Mapper 將輪詢訊息的架構對應至 EmployeeDetails.xsd 架構。

  1. 將 BizTalk 對應程式新增至 BizTalk 專案。 以滑鼠右鍵按一下 BizTalk 專案,指向 [ 新增],然後按一下 [ 新增專案]。

    在 [ 新增專案 ] 對話方塊中,從左窗格中選取 [ 對應檔案]。 從右窗格中,選取 [ 對應]。 指定對應的名稱,例如 MapSchema.btm 。 按一下 [新增]。

  2. 從 [來源架構] 窗格中,按一下 [開放原始碼架構]。

  3. 在 [ BizTalk 類型選擇器 ] 對話方塊中,展開專案名稱、展開 [ 架構],然後選取輪詢訊息的架構。 針對本主題,選取 [Typed_Polling.TypedPolling_Employee]。 按一下 [確定]。

  4. 在 [ 來源架構的根節點 ] 對話方塊中,選取 [TypedPolling],然後按一下 [ 確定]。

  5. 從 [目的地架構] 窗格中,按一下 [ 開啟目的地架構]。

  6. 在 [ BizTalk 類型選擇器 ] 對話方塊中,展開專案名稱、展開 [架構],然後選取 EmployeeDetails 的架構。 針對本主題,選取 [Typed_Polling.EmployeeDetails]。 按一下 [確定]。

  7. 在輪詢訊息的來源架構中,展開 TypedPollingResultSet0 節點和後續節點,以查看輪詢訊息中傳回的專案。 在目的地架構中,展開 EmployeeDetails 節點,以查看架構中的不同元素。 針對本主題,您必須以下列方式對應架構:

    • 來源 架構中的Employee_ID和 名稱 必須對應至目的地架構中的 Employee_Info

    • 來源架構中的指定Job_Description必須對應至目的地架構中的Employee_Profile

    • 來源架構中的等和薪資必須對應至目的地架構中的Employee_Performance

      若要結合來源架構中的多個節點,並將其對應至目的地架構中的單一節點,您必須使用 字串串連運算質UI 指引和開發人員 API 命名空間參考中的詳細資料。

  8. 若要使用字串串連運算質:

    1. [工具箱] 拖曳 字串串連 運算質,並將其放在 Mapper 方格上。

    2. 將來源架構中的 Employee_IDName 元素連接到運算質。

    3. 將運算質連接到目的地架構中的 Employee_Info 元素。

    4. 針對您想要對應的所有元素重複這些步驟。 完成的地圖會如下所示:

      對應強型別輪詢架構

    5. 儲存對應。

    建立 Mapper 之後,協調流程會完成。 您現在必須建置 BizTalk 解決方案,並將其部署至BizTalk Server。 如需詳細資訊,請參閱 建置和執行協調流程

設定 BizTalk 應用程式

部署 BizTalk 專案之後,您稍早建立的協調流程會列在 [BizTalk Server 管理主控台] 的 [協調流程] 窗格中。 您必須使用 BizTalk Server 管理主控台來設定應用程式。 如需逐步解說,請參閱逐步解說 :部署基本 BizTalk 應用程式

設定應用程式牽涉到:

  • 選取應用程式的主機。

  • 將您在協調流程中建立的埠對應至 BizTalk Server 管理主控台中的實體埠。 針對此協調流程,您必須:

    • 定義實體 WCF-Custom 或 WCF-SQL 單向接收埠。 此埠會使用您為埠指定的輪詢語句來輪詢SQL Server資料庫。 如需如何建立埠的詳細資訊,請參閱 手動設定實體埠系結至 SQL 配接器。 請確定您為接收埠指定下列系結屬性。

      重要

      請務必將 InboundID 指定為連線 URI 的一部分。 產生架構時,輸入識別碼必須與您指定的相同。

      重要

      如果您在設計階段指定系結屬性,則不需要執行此步驟。 在這種情況下,您可以匯入取用配接器服務增益集所建立的系結檔案,藉此建立 WCF 自訂或 WCF-SQL 接收埠,並設定必要的系結屬性。 如需詳細資訊,請參閱 使用埠系結檔案設定實體埠系結以使用 SQL 配接器

      Binding 屬性
      InboundOperationType 請確定您已將此設定為 TypedPolling
      PolledDataAvailableStatement 請確定您在產生架構時指定相同的 SQL 語句,也就是:

      SELECT COUNT(*) FROM Employee
      PollingStatement 請確定您在產生架構時提供您指定的相同輪詢語句,也就是:

      SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000

      如需不同系結屬性的詳細資訊,請參閱閱讀 BizTalk Adapter for SQL Server配接器系結屬性

      注意

      建議您在使用 SQL 配接器執行輸入作業時,設定交易隔離等級和交易逾時。 您可以藉由在設定 WCF-Custom 或 WCF-SQL 接收埠時新增服務行為來執行此動作。 如需如何新增服務行為的指示,請參閱 使用 SQL 設定交易隔離等級和交易逾時

    • 定義配接器將卸載訊息的 FILE 傳送埠。 此傳送埠也會使用您在協調流程中建立的對應,將輪詢訊息對應至符合 EmployeeDetails.xsd 架構的訊息。 執行下列步驟來設定 FILE 傳送埠以使用對應。

      1. 建立 FILE 傳送埠。

      2. 從 [傳送埠屬性] 對話方塊的左窗格中,按一下 [ 輸出對應]。 從右窗格中,按一下 [ 地圖 ] 資料行底下的欄位,然後從下拉式清單中選取 [ MapSchema]。 按一下 [確定]。

        在 FILE 傳送埠上設定輸出對應

啟動應用程式

您必須啟動 BizTalk 應用程式,才能從SQL Server資料庫接收訊息。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程

在此階段,請確定:

  • WCF-Custom 或 WCF-SQL 單向接收埠,它會使用針對 PollingStatement系結屬性指定的語句輪詢SQL Server資料庫。

  • FILE 傳送埠會將輪詢訊息對應至 EmployeeDetails 架構正在執行。

  • 作業的 BizTalk 協調流程正在執行。

執行作業

執行應用程式之後,會以相同的循序執行下列一組動作:

  • 配接器會在 Employee 資料表上執行 PolledDataAvailableStatement ,並判斷資料表有輪詢的記錄。

  • 配接器會執行輪詢語句。 因為輪詢語句是由 SELECT 語句和預存程式所組成,所以配接器會執行一個之後的所有語句。

    • 配接器會先執行 SELECT 語句,以傳回 Employee 資料表中的所有記錄。

    • 接著,配接器會執行MOVE_EMP_DATA預存程式,將資料從 Employee 資料表移至 EmployeeHistory 資料表。 這個預存程式不會傳回任何值。

    • 接著,配接器會執行ADD_EMP_DETAILS預存程式,將一筆記錄新增至 Employee 資料表。 這個預存程式會傳回插入記錄的員工識別碼。

      執行輪詢語句並接收訊息之後,輪詢訊息就會傳送至 FILE 傳送埠。 在這裡,傳送埠上設定的輸出對應 (MapSchema) 會將輪詢訊息對應至 EmployeeDetails 架構,並將訊息卸載至檔案位置。 此訊息類似下列內容:

    <?xml version="1.0" encoding="utf-8" ?>   
    <EmployeeDetails xmlns="http://Typed_Polling.EmployeeDetails">  
      <Employee_Info>10751John</Employee_Info>   
      <Employee_Profile>TesterManagesTesting</Employee_Profile>   
      <Employee_Performance>100000</EmployeePerformance>  
    </EmployeeDetails>  
    

    在上述回應中,您可以注意到Employee_Info元素包含員工識別碼 (10751) 和員工名稱的組合, (John) 。 其他元素也包含您在協調流程中建立之 Mapper 中所對應的組合。

注意

SQL 配接器會繼續輪詢,直到您從 BizTalk Server 管理主控台明確停用接收埠為止。

最佳做法

部署並設定 BizTalk 專案之後,您可以將組態設定匯出至稱為系結檔案的 XML 檔案。 產生系結檔案之後,您可以從檔案匯入組態設定,因此您不需要為相同的協調流程建立傳送埠和接收埠。 如需系結檔案的詳細資訊,請參閱 重複使用配接器系結

另請參閱

使用 SQL 配接器搭配BizTalk Server輪詢SQL Server