Microsoft BizTalk Adapter for SQL Server 将 SQL Server 数据库中的过程作为操作来展现。 适配器客户端可以通过将 SQL 适配器与 BizTalk Server 配合使用来调用过程。 有关适配器如何支持这些作的详细信息,请参阅 使用 SQL 适配器在 SQL Server 中执行存储过程。 有关这些作的 SOAP 消息结构的信息,请参阅 过程和函数的消息架构。
SQL 适配器还允许适配器客户端调用:
SQL Server 数据库中的标量函数。 请参阅 使用 BizTalk Server 在 SQL Server 中调用标量函数。
SQL Server 数据库中的表值函数。 请参阅 使用 BizTalk Server 在 SQL Server 中调用 Table-Valued 函数。
注释
如果对包含用户定义类型列的表进行操作,请确保在开始开发应用程序之前,参考 使用 SQL 适配器在具有 User-Defined 类型的表和视图上操作。
如何在 SQL Server 数据库中调用过程
使用 SQL 适配器和 BizTalk Server 对 SQL Server 数据库进行操作,涉及在使用 SQL 适配器开发 BizTalk 应用程序的构建基块中描述的过程任务。 若要在 SQL Server 数据库中调用过程,这些任务包括:
创建 BizTalk 项目,并为要在 SQL Server 数据库中调用的过程生成架构。
在 BizTalk 项目中创建消息,以便发送和接收来自 SQL Server 数据库的消息。
创建业务流程以调用 SQL Server 数据库中的过程。
生成和部署 BizTalk 项目。
通过创建物理发送和接收端口来配置 BizTalk 应用程序。
启动 BizTalk 应用程序。
本主题提供执行这些任务的说明。
基于本主题的示例
BizTalk 适配器包提供了基于本主题的示例 ExecuteStoredProcedure。 有关详细信息,请参阅 SQL 适配器的示例。
生成架构
本主题演示如何通过调用ADD_EMP_DETAILS过程来调用过程。 此过程是通过运行随示例提供的脚本创建的。 ADD_EMP_DETAILS过程采用某些参数,将记录插入 EMPLOYEE 表中,并返回插入记录的员工 ID。 有关示例和 SQL 脚本的信息,请参阅 架构示例。
若要调用ADD_EMP_DETAILS过程,必须为同一过程生成架构。 有关如何生成架构的详细信息,请参阅 在 Visual Studio 中使用 SQL 适配器检索 SQL Server 操作的元数据。
定义消息和消息类型
前面生成的架构描述了业务流程中消息所需的“类型”。 消息通常是变量,类型由相应的架构定义。 现在必须为编排创建消息,并将其链接到在上一步中生成的架构。
创建消息并链接到架构
将一项编排添加到 BizTalk 项目中。 在解决方案资源管理器中,右键单击 BizTalk 项目名称,指向 “添加”,然后单击“ 新建项”。 键入 BizTalk 业务流程的名称,然后单击“ 添加”。
打开 BizTalk 项目的“业务流程视图”窗口(如果尚未打开)。 为此,请单击“ 视图”,指向 “其他窗口”,然后单击“ 业务流程视图”。
在业务流程视图中,右键单击 “消息”,然后单击“ 新建消息”。
右键单击新创建的消息,然后选择“ 属性窗口”。
在Message_1的“属性”窗格中,执行以下作:
用这个 要执行的操作 标识符 类型 Request
消息类型 在下拉列表中,展开 Schemas,然后选择 ExecProcedure.Procedure_dbo.ADD_EMP_DETAILS,其中 "ExecProcedure" 是 BizTalk 项目的名称。 Procedure_dbo是为调用ADD_EMP_DETAILS过程而生成的架构。 重复步骤 2 以创建新消息。 在新消息的 “属性 ”窗格中,执行以下作:
用这个 要执行的操作 标识符 类型 Response
消息类型 在下拉列表中,展开 Schemas,然后选择 ExecProcedure.Procedure_dbo.ADD_EMP_DETAILSResponse。
设置业务流程
必须创建 BizTalk 编排,以使用 BizTalk Server 在 SQL Server 上执行操作。 在此业务流程中,会在定义的接收位置投递请求消息。 SQL 适配器使用此消息并将其传递到 SQL Server。 SQL Server 的响应将保存到另一个位置。 必须包含“发送和接收”形状,才能将消息分别发送到 SQL Server 和接收响应。 用于调用过程的示例编排如下所示:
添加消息形状
请确保为每个邮件形状指定以下属性。 “形状”列中列出的名称是消息形状的名称,如上述编排中所显示。
形状 | 形状类型 | 性能 |
---|---|---|
接收消息 | 接收 | - 将 名称 设置为 ReceiveMessage - 将 “激活 ”设置为 True |
发送消息 | 发送 | - 将 名称 设置为 SendMessage |
接收响应 | 接收 | - 将 名称 设置为 ReceiveResponse - 将 “激活 ”设置为 False |
SendResponse | 发送 | - 将 名称 设置为 SendResponse |
添加端口
请确保为每个逻辑端口指定以下属性。 端口列中列出的名称是在编排中显示的端口的名称。
港口 | 性能 |
---|---|
MessageIn | - 将 标识符 设置为 MessageIn - 将 类型 设置为 MessageInType - 将 通信模式 设置为 单向 - 将通信方向设置为接收 |
LOBPort | - 将 标识符 设置为 LOBPort - 将 类型 设置为 LOBPortType - 将 通信模式 设置为 请求-响应 - 将 通信方向 设置为 发送接收 |
ResponseOut | - 将 标识符 设置为 ResponseOut - 将 类型 设置为 ResponseOutType - 将 通信模式 设置为 单向 - 将通信方向设置为发送 |
指定动作形状的消息,并将其连接到端口
下表列出了为操作形状指定消息及将消息链接到端口时需要设置的属性及其值。 Shape 列中列出的名称是前文提到的业务编排中显示的消息形状的名称。
形状 | 性能 |
---|---|
接收消息 | - 将 消息 设置为 请求 - 将 操作 设置为 MessageIn.Procedure.Request |
发送消息 | - 将 消息 设置为 请求 - 将 操作 设置为 LOBPort.Procedure.Request |
接收响应 | - 将 消息 设置为 响应 - 将 操作 设置为 LOBPort.Procedure.Response |
SendResponse | - 将 消息 设置为 响应 - 将 操作 设置为 ResponseOut.Procedure.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 接收位置。 请求消息的架构必须符合前面生成的过程的架构。 例如,调用GET_EMP_DETAILS的请求消息为:
<ADD_EMP_DETAILS xmlns="mssql://Microsoft.LobServices.Sql/2008/01/Procedures/dbo">
<emp_name>John</emp_name>
<emp_desig>Developer</emp_desig>
<salary>100000</salary>
</ADD_EMP_DETAILS>
有关使用 SQL 适配器在 SQL Server 数据库中调用过程的请求消息架构的详细信息,请参阅 过程和函数的消息 架构。
协调处理消息并将其发送到 SQL Server 数据库。 SQL Server 数据库的响应保存在定义为业务流程一部分的其他 FILE 位置。 例如,来自 SQL Server 数据库的上述请求消息的响应为:
<?xml version="1.0" encoding="utf-8" ?>
<ADD_EMP_DETAILSResponse xmlns="mssql://Microsoft.LobServices.Sql/2008/01/Procedures/dbo">
<ADD_EMP_DETAILSResult>
<DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element msdata:IsDataSet="true" name="NewDataSet">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Employee_ID" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<NewTable>
<Employee_ID>10001</Employee_ID>
</NewTable>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
</ADD_EMP_DETAILSResult>
<ReturnValue>0</ReturnValue>
</ADD_EMP_DETAILSResponse>
在上述响应中, <Employee_ID>
元素包含插入记录的员工 ID。
最佳做法
部署并配置 BizTalk 项目后,可以将配置设置导出到名为绑定文件的 XML 文件。 生成绑定文件后,可以从文件导入配置设置,以便无需为同一业务流程创建发送端口和接收端口等项。 有关绑定文件的详细信息,请参阅 重复使用适配器绑定。