使用 SQL 适配器对具有大型数据类型的表和视图运行操作

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 客户端连接 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 的表、记录。 Id 列的类型为 uniqueidentifier,采用 GUID。 Document 列的类型为 VARBINARY (MAX) 。 假设 ID 列已具有 GUID“438B7B4C-5491-409F-BCC1-78817C399EC3”。 若要更新“文档”列,适配器会公开 SetDocument 操作。

注意

对于 SQL Server 2008,为了演示 FILESTREAM 操作,假定 Document 列可以存储 FILESTREAM 数据。

如何对SQL Server数据库执行操作

将 SQL 适配器与 BizTalk Server 配合使用对 SQL Server 数据库执行操作涉及构建基块中所述的过程任务,以便使用 SQL 适配器开发 BizTalk 应用程序。 若要对具有大型数据类型的表执行操作,这些任务包括:

  1. 创建 BizTalk 项目,并为“设置<column_name> ”操作生成架构。 对于本主题,请为 Record 表的 SetDocument 操作生成架构。

  2. 在 BizTalk 项目中创建消息,以便从SQL Server数据库发送和接收消息。

  3. 创建业务流程以调用 Record 表上的 SetDocument 操作。

  4. 生成和部署 BizTalk 项目。

  5. 通过创建物理发送和接收端口来配置 BizTalk 应用程序。

  6. 启动 BizTalk 应用程序。

    本主题提供有关执行这些任务的说明。

基于本主题的示例

BizTalk 适配器包提供了基于本主题的示例 FILESTREAMOperation。 有关详细信息,请参阅 SQL 适配器的示例

生成架构

若要演示如何更新大型数据类型列中的值,请为 Records 表的 SetDocument 操作生成架构。 必须创建 BizTalk 项目并使用“使用适配器服务加载项”生成架构。 有关如何生成架构的详细信息,请参阅使用 SQL 适配器在 Visual Studio 中检索SQL Server操作的元数据

定义消息和消息类型

你之前生成的架构描述了业务流程中的消息所需的“类型”。 消息通常是一个变量,其类型由相应的架构定义。 现在必须为业务流程创建消息,并将其链接到在上一步中生成的架构。

  1. 将业务流程添加到 BizTalk 项目。 在解决方案资源管理器中,右键单击 BizTalk 项目名称,指向“添加”,然后单击“新建项”。 键入 BizTalk 业务流程的名称,然后单击“ 添加”。

  2. 打开 BizTalk 项目的“业务流程视图”窗口(如果尚未打开该窗口)。 为此,请单击“ 视图”,指向“ 其他窗口”,然后单击“ 业务流程视图”。

  3. 在“业务流程视图”中,右键单击“ 消息”,然后单击“ 新建消息”。

  4. 右键单击新创建的消息,然后选择“ 属性窗口”。

  5. Message_1的“属性”窗格中,执行以下操作:

    使用此选项 要执行此操作
    标识符 键入 Request
    消息类型 在下拉列表中,展开“ 架构”,然后选择 “SetOperation.TableOperation_dbo_Records.SetDocument”,其中 SetOperation 是 BizTalk 项目的名称。 TableOperation_dbo_Records是为 Record 表上的 SetDocument 操作生成的架构。
  6. 重复步骤 2 以创建新消息。 在新邮件的“ 属性 ”窗格中,执行以下操作:

    使用此选项 要执行此操作
    标识符 键入 Response
    消息类型 从下拉列表中,展开“ 架构”,然后选择 “SetOperation.TableOperation_dbo_Records.SetDocumentResponse”。

设置业务流程

必须创建 BizTalk 业务流程才能使用 BizTalk Server 在 SQL Server 上执行操作。 在此业务流程中,你将在定义的接收位置删除请求消息。 SQL 适配器使用此消息并将其传递给SQL Server。 来自SQL Server的响应将保存到另一个位置。 必须包含“发送”和“接收”形状,才能分别将消息发送到SQL Server和接收响应。 SetDocument 操作的示例业务流程如下所示:

用于执行 FILESTREAM 操作的业务流程

添加消息形状

请确保为每个消息形状指定以下属性。 “形状”列中列出的名称是刚才提到的业务流程中显示的消息形状的名称。

形状 形状类型 属性
ReceiveMessage 接收 - 将 Name 设置为 ReceiveMessage
- 将 “激活” 设置为 “True”
SendMessage 发送 - 将 “名称” 设置为 SendMessage
ReceiveResponse 接收 - 将 Name 设置为 ReceiveResponse
- 将 “激活” 设置为 “False”
SendResponse 发送 - 将 “名称” 设置为 SendResponse

添加端口

请确保为每个逻辑端口指定以下属性。 “端口”列中列出的名称是业务流程中显示的端口名称。

端口 属性
MessageIn - 将 标识符 设置为 MessageIn
- 将 Type 设置为 MessageInType
- 将 通信模式 设置为 单向
- 将 通信方向 设置为 接收
LOBPort - 将 标识符 设置为 LOBPort
- 将 Type 设置为 LOBPortType
- 将 通信模式 设置为 请求-响应
- 将 通信方向 设置为 “发送-接收”
ResponseOut - 将 标识符 设置为 ResponseOut
- 将 Type 设置为 ResponseOutType
- 将 通信模式 设置为 单向
- 将 “通信方向 ”设置为 “发送”

指定操作形状的消息,并将其连接到端口

下表指定了应设置的属性及其值,以便为操作形状指定消息并将消息链接到端口。 “形状”列中列出的名称是前面提到的业务流程中显示的消息形状的名称。

形状 属性
ReceiveMessage - 将 “消息 ”设置为 “请求”
- 将 操作 设置为 MessageIn.FileStream.Request
SendMessage - 将 “消息 ”设置为 “请求”
- 将 操作 设置为 LOBPort.FileStream.Request
ReceiveResponse - 将 消息 设置为 响应
- 将 操作 设置为 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 数据的操作必须在事务中执行。 因此,请确保在 WCF-Custom 或 WCF-SQL 发送端口上将 UseAmbientTransaction 绑定属性设置为 True 。 有关绑定属性的详细信息,请参阅阅读有关 SQL Server 适配器绑定属性的 BizTalk 适配器

      重要

      若要执行插入 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 操作的架构。 例如,更新 Document 列的请求消息为:

<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 编码值。

此请求消息使用指定的值更新 Document 列。 业务流程使用消息并将其发送到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 文件。 生成绑定文件后,可以从文件导入配置设置,这样就无需为同一业务流程创建发送端口和接收端口等项。 有关绑定文件的详细信息,请参阅 重用适配器绑定

另请参阅

使用 SQL 适配器开发 BizTalk 应用程序