适用于 SQL Server 的 Microsoft BizTalk 适配器使适配器客户端能够从SQL Server数据库接收数据更改消息。 SQL适配器支持接收“基于轮询”的消息,其中适配器执行指定的SQL语句 (SELECT 语句或存储过程) 、检索或更新数据,并定期向适配器客户端提供结果。
SQL适配器公开以下轮询操作:
轮询
:使你能够接收SQL Server表或视图的定期数据更改消息。 消息不是强类型化的。
TypedPolling
:允许从SQL Server数据库接收强类型消息。 如果要将轮询消息中的元素映射到任何其他架构,则必须使用此操作。
XmlPolling
。 使你能够使用 SELECT 语句或存储过程,这些语句使用 FOR XML 子句并将数据作为 XML 消息返回。 此操作将轮询消息作为 XML 消息返回。
有关 FOR XML 子句的详细信息,请参阅
https://go.microsoft.com/fwlink/?LinkId=131402
。
有关在SQL适配器中轮询的详细信息,请参阅
使用 BizTalk Server 从 SQL Server 接收基于轮询的数据更改的消息
。
使用SQL适配器的典型轮询操作涉及以下内容:
适配器客户端必须在
InboundOperationType
绑定属性中指定
Polling
为入站操作。 此绑定属性的默认值为
Polling
。
适配器客户端必须为
PolledDataAvailableStatement
绑定属性指定SQL语句,该属性确定是否有数据可用于轮询。 执行此语句时返回的第一行的第一行的第一列包含整数值。 如果没有可用于轮询的数据,则返回值为 0 (零) 。 如果有数据可用,则返回值大于零。
适配器客户端必须为
PollingIntervalInSeconds
绑定属性指定轮询间隔,以定义
执行 PolledDataAvailableStatement
绑定属性中的语句的间隔。 在每个轮询间隔结束时,将执行轮询的数据可用语句,并返回结果集。
适配器客户端必须为
PollingStatement
绑定属性指定轮询SQL语句 (SELECT 语句或存储过程) 。 如果有数据可用于轮询
由 PolledDataAvailableStatement
绑定属性) 确定的轮询 (,则适配器将执行轮询语句以获取和更新 ((如果适用) SQL Server数据库中的数据)。 当SQL适配器与BizTalk Server一起使用时,同一事务也用于将消息提交到BizTalk Server。
适配器客户端可以使用
PollWhileDataFound
绑定属性忽略轮询间隔,并连续轮询数据,以及何时可用。
作为执行轮询语句而返回的结果集将作为入站消息发送到适配器客户端。
当
UseAmbientTransaction
设置为 False 时,不会调用
PolledDataAvailableStatement
。 相反,适配器直接调用
PollingStatement
。
XmlPolling 操作涉及与轮询操作相同的步骤。
Strongly-Typed轮询
使用SQL适配器的典型强类型轮询操作涉及以下内容:
适配器客户端必须在
InboundOperationType
绑定属性中指定
TypedPolling
为入站操作。 此绑定属性的默认值为
Polling
。
适配器客户端必须将入站 ID 指定为连接 URI 的一部分。 入站 ID 可以是任何字符串,并追加到 TypedPolling 操作的标准命名空间,以防止命名空间冲突。
其余步骤与上一部分所述的轮询操作中列出的步骤 2-6 相同。
有关与轮询和强类型轮询相关的绑定属性的详细信息,请参阅
有关 SQL Server 适配器绑定属性的 BizTalk 适配器
。
执行轮询语句后,可以返回多个结果集。 如果结果集不包含任何行,则不会向适配器客户端发送消息。
下图提供有关SQL适配器中的轮询工作流的信息。 演示了轮询工作流的两种方案:
当
PollWhileDataFound
的值设置为“False”时, (默认设置) 。
当 PollWhileDataFound
的值设置为“True” 时。
轮询和查询通知之间的差异
尽管轮询和查询通知既是入站操作,又通知适配器客户端SQL Server数据库中的数据更改,但下表列出了两者之间的一些差异。 以下差异将帮助你根据要求决定操作:
轮询由适配器启动。 适配器执行语句来验证数据是否可用于轮询,然后在某些数据可用于轮询时通过执行轮询语句来启动轮询。
查询通知由SQL Server启动。 适配器发出的通知语句只是指示数据库启动通知,以防语句的结果集发生更改。
可以使用轮询语句读取或更新SQL Server数据库表中的数据。
可以使用查询通知语句仅读取SQL Server数据库表中的数据。
轮询会通知你已更改的实际数据。
查询通知仅通知插入、更新和删除等数据中的更改类型。
数据更改通知取决于轮询间隔,适配器客户端会在每次轮询间隔结束时通知数据更改。
提示:
在数据更改持续发生的情况下,轮询可以提供更好的吞吐量,并且不希望在每次更改发生时收到通知。 而是指定轮询间隔,之后需要通知自上次数据更改通知以来发生的所有更改。
数据更改通知是即时的。
有关 Microsoft BizTalk Adapter for SQL Server 中的查询通知的详细信息,请参阅
使用 BizTalk Server 接收SQL查询通知
。
可以使用适配器执行哪些操作?