SQL 配接器可讓配接器用戶端讀取和更新大型數據類型數據行中的數據,也就是 varchar(max)、nvarchar(max) 或 varbinary(max)。 若要從這類數據行讀取數據,配接器用戶端可以使用Select作業。 若要將數據插入或更新至這類數據行,配接器會公開 Set<column_name> 作業,其中 <column_name> 是 varchar(max)、nvarchar(max) 或 varbinary(max) 類型的數據行名稱。
此外,在 SQL Server 2008 中,您可以讓 varbinay(max) 資料行儲存非結構化數據,例如文字檔和影像。 這類非結構化數據稱為 FILESTREAM 數據。 FILESTREAM 數據可以儲存為檔案系統上的檔案。 SQL 配接器可讓用戶端將 FILESTREAM 數據輸入 varbinary(max) 類型的數據行。 如需 FILESTREAM 記憶體的詳細資訊,請參閱 FILESTREAM 概觀。
本主題提供您必須在執行 SQL Server 的電腦上執行之特定工作的相關信息,以及執行配接器用戶端的電腦,才能插入或更新 FILESTREAM 數據。 本主題也提供執行 Set<column_name> 作業以插入 FILESTREAM 資料的指示。
備註
在開發應用程式之前,如果您要在具有使用者自訂類型之資料行的資料表或檢視上執行操作,請務必先參閱 使用 SQL 配接器進行的 User-Defined 類型資料表和檢視操作。
先決條件
您必須在執行 SQL Server 的電腦和執行配接器客戶端的電腦上分別完成下列任務。
在執行 SQL Server 的電腦上
您必須在 SQL Server 實例上啟用 FILESTREAM。 如需詳細資訊,請參閱https://go.microsoft.com/fwlink/?LinkId=122486。
您必須建立已啟用 FILESTREAM 的資料庫。 如需詳細資訊,請參閱https://go.microsoft.com/fwlink/?LinkId=122487。
您必須有用來儲存 FILESTREAM 資料的數據表。 如需詳細資訊,請參閱https://go.microsoft.com/fwlink/?LinkId=122488。
您必須在裝載 SQL Server 資料庫的電腦上設定 MSDTC。 如需如何設定 MSDTC 的指示,請參閱 在 SQL Server 和配接器用戶端上設定 MSDTC。
在執行配接器客戶端的電腦上
您必須安裝 SQL 用戶端連線 SDK。 您可以執行 SQL Server 2008 安裝程式,並在精靈的 [功能選取] 頁面中選取 [SQL 用戶端連線 SDK] 來安裝 SQL 用戶端連線 SDK。 配接器會使用隨 SQL 用戶端連線 SDK 一起安裝的 sqlncli10.dll來執行 FILESTREAM 作業。
您必須在執行配接器用戶端的電腦上設定 MSDTC。 如需如何設定 MSDTC 的指示,請參閱 在 SQL Server 和配接器用戶端上設定 MSDTC。
完成這些工作之後,您就準備就緒,可以在 SQL Server 2008 資料庫資料表中插入或更新 FILESTREAM 資料。
本主題如何示範大型數據類型的作業
若要示範如何在具有大型數據類型的資料表上執行設定<column_name> 作業,請取得具有 Id 和 Document 欄位的資料表,稱為 Records。 Id 欄的類型為 uniqueidentifier,並採用 GUID。 Document 資料行的類型為 VARBINARY(MAX)。 假設 Id 欄位已經有 GUID '438B7B4C-5491-409F-BCC1-78817C399EC3'。 若要更新 [檔] 數據行,配接器會公開 SetDocument 作業。
備註
針對 SQL Server 2008,若要示範 FILESTREAM 作業,假設 Document 數據行可以儲存 FILESTREAM 數據。
如何在 SQL Server 資料庫上執行作業
搭配 BizTalk Server 使用 SQL 配接器在 SQL Server 資料庫上執行作業牽涉到建置組塊中所述的程式性工作 ,以使用 SQL 配接器開發 BizTalk 應用程式。 若要對具有大型數據類型的數據表執行作業,這些工作如下:
建立 BizTalk 專案,並產生設定<column_name> 作業的架構。 針對本主題,為 Records 數據表產生 SetDocument 作業的架構。
在 BizTalk 專案中建立訊息,以從 SQL Server 資料庫傳送和接收訊息。
建立協調流程以在 Records 數據表上叫用 SetDocument 作業。
建置及部署 BizTalk 專案。
藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。
啟動 BizTalk 應用程式。
本主題提供執行這些工作的指示。
以本主題為基礎的範例
在 BizTalk 配接器套件中隨附一個範例,名為 FILESTREAMOperation,是基於本主題而製作的。 如需詳細資訊,請參閱 SQL 配接器的範例。
產生架構
若要示範如何更新大型數據類型數據行中的值,請為 Records 數據表的 SetDocument 作業產生架構。 您必須建立 BizTalk 專案,並使用取用配接器服務外掛來產生結構描述。 如需如何產生架構的詳細資訊,請參閱 使用 SQL 配接器在 Visual Studio 中擷取 SQL Server 作業的元數據 。
定義訊息和訊息類型
您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 您現在必須建立協調流程的訊息,並將其連結至您在上一個步驟中產生的架構。
建立訊息並連結至架構
將協調流程新增至 BizTalk 專案。 在 [方案總管] 中,以滑鼠右鍵按兩下 BizTalk 專案名稱,指向 [ 新增],然後按兩下 [ 新增專案]。 輸入 BizTalk 協調流程的名稱,然後按兩下 [ 新增]。
如果 BizTalk 專案尚未開啟,請開啟 BizTalk 專案的 [協調流程檢視] 視窗。 若要這樣做,請按一下 [檢視],指向 [其他 Windows],然後按一下 [編排檢視]。
在 [協調流程檢視] 中,以滑鼠右鍵按兩下 [ 訊息],然後按兩下 [ 新增訊息]。
以滑鼠右鍵按下新建立的訊息,然後選取 [ 屬性視窗]。
在Message_1的 [屬性] 窗格中,執行下列動作:
使用此 若要這樣做 識別碼 類型 Request訊息類型 從下拉式清單中展開 [架構],然後選取 [SetOperation.TableOperation_dbo_Records.SetDocument],其中 SetOperation 是您 BizTalk 專案的名稱。 TableOperation_dbo_Records是 Record 數據表上 SetDocument 作業所產生的架構。 重複步驟 2 以建立新的訊息。 在新訊息的 [ 屬性 ] 窗格中,執行下列動作:
使用此 若要這樣做 識別碼 類型 Response訊息類型 從下拉式清單中展開 Schemas,然後選取 SetOperation.TableOperation_dbo_Records.SetDocumentResponse。
設定協調流程
您必須建立 BizTalk 協調流程,才能使用 BizTalk Server 在 SQL Server 上執行作業。 在此協調流程中,您會在定義的接收位置放置要求訊息。 SQL 配接器會取用此訊息,並將其傳遞至 SQL Server。 SQL Server 的回應會儲存至另一個位置。 您必須包含傳送和接收圖形,才能將訊息分別傳送至 SQL Server 和 接收回應。 SetDocument 作業的範例協調流程如下所示:
新增訊息圖形
請確定您為每個訊息圖形指定下列屬性。 Shape 數據行中所列的名稱是訊息圖形的名稱,如剛才提及的協調流程所示。
| 形狀 | 圖形類型 | 性能 |
|---|---|---|
| 接收訊息 | 收到 | - 將 名稱 設定為 ReceiveMessage - 將 Activate 設定為 True |
| 發送訊息 | 發送 | - 將 [名稱] 設定為 SendMessage |
| 接收回應 | 收到 | - 將 [名稱] 設定為 ReceiveResponse - 將 Activate 設定為 False |
| SendResponse | 發送 | - 將 [名稱] 設定為 SendResponse |
新增埠
請確定您為每個邏輯埠指定下列屬性。 [埠] 資料行中所列的名稱是協調流程中顯示的埠名稱。
| 港口 | 性能 |
|---|---|
| MessageIn | - 將 標識碼 設定為 MessageIn - 將 類型 設定為 MessageInType - 將 通訊模式 設定為 單向 - 將 通訊方向 設定為 接收 |
| LOBPort | - 將 識別碼 設定為 LOBPort - 將 [類型 ] 設定為 LOBPortType - 將 通訊模式 設定為 要求-回應 - 將 通訊方向 設定為 傳送接收 |
| ResponseOut | - 將 標識碼 設定為 ResponseOut - 將 類型 設定為 ResponseOutType - 將 通訊模式 設定為 單向 - 將 通訊方向 設定為 傳送 |
設定動作圖形的訊息,並將其連接到端口
下表指定您應該設定的屬性及其值,以配置動作圖形的訊息並將其連結至埠。 Shape 數據行中所列的名稱是訊息圖形的名稱,如先前所述的協調流程所示。
| 形狀 | 性能 |
|---|---|
| 接收訊息 | - 將 訊息 設定為 要求 - 將 作業 設定為 MessageIn.FileStream.Request |
| 發送訊息 | - 將 訊息 設定為 要求 - 將 作業 設定為 LOBPort.FileStream.Request |
| 接收回應 | - 將 訊息 設定為 回應 - 將 作業 設定為 LOBPort.FileStream.Response |
| SendResponse | - 將 訊息 設定為 回應 - 將 作業 設定為 ResponseOut.FileStream.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配接器的實體埠系結。
這很重要
輸入 FILESTREAM 資料的作業必須在交易內執行。 因此,請確定 useAmbientTransaction 系結屬性在 WCF-Custom 或 WCF-SQL 傳送埠上設定為 True 。 如需系結屬性的詳細資訊,請參閱
。這很重要
若要執行作業來插入 FILESTREAM 數據,您必須一律使用 Windows 驗證連線到 WCF-Custom 或 WCF-SQL 傳送埠上的 SQL Server。 因此,在 [埠屬性] 對話方塊的 [ 認證] 索引標籤中,選取 [不要使用單一登錄 ] 選項,並將使用者名稱和密碼保留空白。
備註
使用「取用配接器服務 BizTalk 專案附加元件」生成架構時,也會建立系結檔案,其中包含關於這些埠和要在其上設定的動作的信息。 您可以從 BizTalk Server 管理主控台匯入此系結檔案,以建立傳送埠(用於輸出通話)或接收埠(用於輸入通話)。 如需詳細資訊,請參閱 使用埠系結檔案設定實體埠系結以使用 SQL 配接器。
啟動應用程式
您必須啟動 BizTalk 應用程式,才能在 Records 數據表上執行 SetDocument 作業。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程。
在這個階段,請確定:
要接收編排要求訊息的 FILE 接收埠正在運行。
從協調流程接收回應訊息的 FILE 傳送埠正在執行中。
WCF-Custom 或 WCF-SQL 傳送埠用於將訊息傳送至 SQL Server 資料庫正在運行。
作業的 BizTalk 協調流程正在執行中。
執行作業
執行應用程式之後,您必須將要求訊息放入 FILE 接收位置。 要求訊息的架構必須符合您稍早產生之 SetDocument 作業的架構。 例如,更新 [檔案] 資料行的要求訊息為:
<SetDocument xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Records">
<Filter>WHERE Id='438B7B4C-5491-409F-BCC1-78817C399EC3'</Filter>
<Data>UwBlAHQAdgBfAHYAYQByAGIAaQBuAGEAcgB5AE0AQQBYAA==</Data>
</SetDocument>
這很重要
元素 Filter 必須包含 WHERE 子句,配接器會根據其中更新記錄。 元素 Data 必須包含您要插入 Document 資料行的 base64 編碼值。
此要求訊息會以指定的值更新 [檔] 資料行。 協調流程會取用訊息,並將其傳送至 SQL Server 資料庫。 來自 SQL Server 資料庫的回應會儲存在定義為協調流程一部分的其他 FILE 位置。 例如,上述要求訊息的 SQL Server 資料庫回應為:
<?xml version="1.0" encoding="utf-8" ?>
<SetDocumentResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Records" />
配接器會傳送 Set<column_name> 作業的空白回應。
最佳做法
部署並設定 BizTalk 項目之後,您可以將組態設定匯出至稱為系結檔案的 XML 檔案。 產生系結檔案之後,您可以從檔案匯入組態設定,因此您不需要為相同的協調流程建立傳送埠和接收埠等專案。 如需系結檔案的詳細資訊,請參閱 重複使用配接器系結。