了解适用于 SQL Server 适配器绑定属性的 BizTalk 适配器

适用于 SQL Server 的 Microsoft BizTalk 适配器提供多个绑定属性。 通过设置这些属性,可以控制适配器的某些行为。 本部分介绍 SQL 适配器公开的绑定属性。 它还演示如何使用 .NET 编程或通过在 BizTalk Server 物理端口绑定上设置属性来访问它们。

适配器绑定属性

下表显示了按类别分组的 SQL 适配器绑定属性。 类别是指每个绑定属性出现在不同应用程序用来配置适配器(或绑定)的对话框中的节点。

XmlStoredProcedureRootNodeName

类别:FOR XML
说明:指定 SELECT 语句中具有 FOR XML 子句的存储过程的响应架构的根节点的名称。 此根节点封装在执行此类存储过程后从 SQL Server 收到的 XML 响应。 必须根据主题“使用 BizTalk Server 在 SQL Server 中的存储过程中使用 FOR XML 子句执行操作”中所述,将此根节点添加到响应架构中。

重要

在使用 FOR XML 子句执行存储过程时,必须设置此绑定属性。

.NET 类型:字符串

Xml存储过程根节点命名空间

类别:FOR XML
说明:为 SELECT 语句中具有 FOR XML 子句的存储过程的响应架构指定根节点的目标命名空间。
.NET 类型:字符串

CloseTimeout

类别:常规
说明:WCF 连接关闭超时。 默认值为 1 分钟。
.NET 类型:System.TimeSpan

名称

类别:常规
说明:一个只读值,该值返回添加适配器服务引用 Visual Studio 插件生成的文件的名称,用于保存 WCF 客户端类。 添加适配器服务引用插件通过将“Client”追加到 Name 属性的值来形成文件名。 此属性的默认值为“SqlAdapterBinding”;对于此值,生成的文件将命名为“SqlAdapterBindingClient”。
.NET 类型:字符串

OpenTimeout

类别:常规
说明:指定 WCF 连接开启超时时间。 默认值为 1 分钟。

重要

SQL 适配器始终使用 OpenTimeout 在打开与 SQL Server 的连接时设置连接打开超时。 适配器将忽略打开通信对象时传递的任何超时 (System.TimeSpan) 参数。 例如,适配器忽略打开通道时传递的任何超时参数。

.NET 类型:System.TimeSpan

接收超时 (ReceiveTimeout)

类别:常规
说明:指定 WCF 消息接收超时。 实质上,这意味着适配器等待入站消息的最大时间。 默认值为 10 分钟。

重要

对于入站操作(如轮询),建议将超时设置为最大可能值,即 24.20:31:23.6470000(24 天)。 将适配器与 BizTalk Server 配合使用时,将超时设置为较大的值不会影响适配器的功能。

.NET 类型:System.TimeSpan

SendTimeout

类别:常规
说明:指定 WCF 消息发送超时。 默认值为 1 分钟。
.NET 类型:System.TimeSpan

启用BizTalk兼容模式

类别:BizTalk
说明:指示适配器是与 BizTalk Server 还是 .NET 应用程序一起使用。

  • 使用 BizTalk Server 中的适配器(或使用 BizTalk 项目中的适配器在 SQL Server 上生成作的元数据)时,必须始终将属性设置为 True。 这可确保为 System.Data.DataSet 生成的架构采用与 BizTalk Server 兼容的格式。 否则 BizTalk 项目将无法编译。
  • 在 .NET 应用程序中使用 Visual Studio 中的适配器时,如果要将响应用作数据集,则必须将属性设置为 False 。 这可确保为 System.Data.DataSet 生成的架构采用与 WCF DataContractSerializer 兼容的格式。

.NET 类型:bool (System.Boolean)

批量大小

类别:缓冲
说明:指定在 SQL Server 数据库中的表或视图上执行多个记录插入、更新和删除操作时的批处理大小。 默认值为 20。 对于大于 1 的 BatchSize 值,SQL 适配器将指定的记录数批处理到单个调用中。 较高的值可能会提高性能,但会影响内存消耗。
.NET 类型:int (System.Int32)

数据块大小

类别:缓冲
说明:指定用于<设置> column_name 操作的缓冲区大小。 默认值为4194304个字节。 较高的值可能会提高性能,但会影响内存消耗。

注释

有关设置column_name作的详细信息,请参阅使用 SQL 适配器对包含大型数据类型的表和视图的作。><

.NET 类型:int (System.Int32)

加密

类别:连接
说明:指定 SQL Server(安装了有效证书)是否对 SQL Server 和客户端之间的所有数据传输使用 SSL 加密。 默认值为 false
.NET 类型:bool (System.Boolean)

最大连接池大小 (MaxConnectionPoolSize)

类别:连接 说明:指定特定连接字符串的连接池中允许的最大连接数。 默认值为 100。 此属性用于性能优化。

重要

必须谨慎地设置 MaxConnectionPoolSize 。 如果此值设置得太大,则可能会耗尽可用连接数。

.NET 类型:int (System.Int32)

WorkstationId

类别:连接
说明:指定使用 SQL 适配器连接到 SQL Server 数据库的工作站(客户端计算机)的唯一 ID。 此绑定属性的值(如果指定)用于 SqlConnection.ConnectionString 属性的 工作站 ID 关键字。 有关详细信息,请参阅 SqlConnection.ConnectionString 属性
.NET 类型:字符串

启用性能计数器

类别:诊断
说明:指定是否启用 WCF LOB 适配器 SDK 性能计数器和 SQL 适配器 LOB 延迟性能计数器。 默认值为 False;性能计数器已禁用。 LOB 延迟性能计数器度量 SQL 适配器在调用 SQL Server 数据库时花费的总时间。

有关 SQL 适配器的性能计数器的详细信息,请参阅 将性能计数器与 SQL 适配器配合使用
.NET 类型:int (System.Int32)

InboundOperationType

类别:入站
说明:指定是要执行 轮询TypedPollingXmlPolling 还是 通知 入站作业。 默认值为 轮询

有关 轮询TypedPollingXmlPolling 的详细信息,请参阅 对轮询的支持。 有关 通知的详细信息,请参阅 “使用 SQL 适配器接收查询通知的注意事项”。
.NET 类型:枚举

UseDatabaseNameInXsdNamespace

类别:元数据
说明:指定是否为特定项目生成的 XSD 包含数据库名称。 将此设置为 True 以包含数据库名称。 否则,请将此项设置为 False。 默认值为 False

在单个应用程序想要对不同数据库中具有不同元数据的同名工件执行操作时,这非常有用。 如果命名空间中没有数据库名称,则生成的元数据将冲突。 通过设置此绑定属性,可以在命名空间中包含数据库名称,从而使数据库名称是唯一的。 以下示例突出显示命名空间中的更改。

UseDatabaseNameInXsdNamespace = False
http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee

UseDatabaseNameInXsdNamespace = True
http://schemas.microsoft.com/Sql/2008/05/TableOp/MyDatabase/dbo/Employee

请注意,当绑定属性设置为 True 时,命名空间中包含数据库名称。

.NET 类型:枚举

允许标识插入

类别:杂项
说明:指定适配器是否可以在“插入”和“更新”作期间插入标识列的值。 将此属性设置为 True 以插入或更新标识列的值。 否则,请将此项设置为 False (默认值)。

注释

将此属性设置为 True 意味着适配器使用 SET IDENTITY_INSERT <table_name> ON。 有关详细信息,请参阅 SET IDENTITY_INSERT(Transact-SQL)。

使用此绑定属性时,必须考虑以下几点:

  • 适配器不会验证您为身份列传递的值。 例如,如果表的标识列的“标识种子”设置为 100 且“标识增量”设置为 1,并且适配器客户端将传递一个值(例如 95)作为标识列,适配器只需将此值传递给 SQL Server。
  • 即使将 AllowIdentityInsert 设置为 True,适配器客户端也不要求在请求消息中指定标识列的值。 如果标识列存在值,适配器会将其传递到 SQL Server。 如果值不存在,SQL Server 将根据标识列的规范插入值。

.NET 类型:bool (System.Boolean)

通知声明

类别:通知(入站)
说明:指定用于注册 SQL Server 通知的 SQL 语句(SELECT 或 EXEC <存储过程>)。 必须在语句中专门输入列名,如以下 SELECT 语句所示:

SELECT Employee_ID,Designation FROM dbo.Employee WHERE Status=0

注释

必须指定数据库对象名称以及架构名称。 例如,dbo.Employee

仅当指定 SQL 语句的结果集发生更改时,适配器才会从 SQL Server 获取通知消息。

.NET 类型:字符串

通知监听器启动

类别:通知(入站)
说明:指定适配器是否向适配器客户端发送通知消息,告知接收位置在侦听器启动时已开始运行。 默认值为 True。

收到的通知消息如下所示:

<?xml version="1.0" encoding="utf-8" ?>
 <Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/">
   <Info>ListenerStarted</Info>
    <Source>SqlBinding</Source>
    <Type>Startup</Type>
  </Notification>

.NET 类型:bool (System.Boolean)

轮询数据可用声明

类别:轮询(入站)
说明:指定执行的 SQL 语句,以确定是否有任何数据可用于轮询 SQL Server 数据库中的特定表。 指定的语句必须返回由行和列组成的结果集。 结果集的第一个单元格中的值指示适配器是否执行 为 PollingStatement 绑定属性指定的 SQL 语句。 如果结果的第一个单元格包含正值,适配器将执行轮询语句。

下面是可为此绑定属性指定的一些有效语句的示例:

  • 如果要指定 SELECT 语句:

    SELECT COUNT(*) from <table_name>

  • 如果要指定存储过程,则存储过程可能定义为:

    CREATE PROCEDURE <procedure_name>
    AS BEGIN
    SELECT COUNT(*) FROM <table_name>
    END
    GO
    

    CREATE PROCEDURE <procedure_name>
    AS BEGIN
    DECLARE @count int
    SELECT @count = SELECT(*) FROM <table_name>
    SELECT @count
    END
    GO
    

如果使用存储过程,则会将 PolledDataAvailableStatement 指定为 EXEC <procedure_name>.

重要

您为此绑定属性指定的语句不在 适配器发起的 事务中执行,并且在执行实际轮询语句之前可能会多次调用该语句,即使该语句执行后显示有可用于轮询的行。

.NET 类型:字符串

轮询间隔时间(秒)

类别:轮询(入站)
说明:指定 SQL 适配器执行 为 PolledDataAvailableStatement 绑定属性指定的语句的间隔(以秒为单位)。 默认值为 30 秒。 轮询间隔定义了连续轮询之间的时间间隔。 如果语句在指定间隔内执行,则适配器在间隔的剩余时间内处于非活动状态。
.NET 类型:int (System.Int32)

轮询声明

类别:轮询(入站)
说明:指定要轮询 SQL Server 数据库表的 SQL 语句。 可以为轮询语句指定简单的 SELECT 语句或存储过程。 默认值为 null。 必须为 PollingStatement 指定一个值才能启用轮询。 仅当有数据可用于轮询时,才会执行轮询语句,该数据由 PolledDataAvailableStatement 绑定属性确定。

可以指定以分号分隔的任意数量的 SQL 语句。 可以使用轮询语句读取或更新 SQL Server 数据库表中的数据。 SQL 适配器在一个事务中执行轮询语句。 将适配器与 BizTalk Server 一起使用时,同一事务用于将来自 SQL Server 的消息提交到 BizTalk 消息框。

.NET 类型:字符串

PollWhileDataFound

类别:轮询(入站)
说明:指定 SQL 适配器是否忽略轮询间隔并连续执行为 PolledDataAvailableStatement 绑定属性指定的 SQL 语句(如果正在轮询的表中有数据)。 如果表中没有可用数据,适配器将还原为按指定的轮询间隔执行 SQL 语句。 默认值为 false

假设轮询间隔设置为 60 秒,并且 PolledDataAvailableStatement 指定的语句返回轮询可用的数据。 然后,适配器执行 为 PollingStatement 绑定属性指定的语句。 假设适配器执行轮询语句只需 10 秒,则现在必须等待 50 秒,然后再次执行 PolledDataAvailableStatement ,然后执行轮询语句。 相反,若要优化性能,可以将 PollWhileDataFound 绑定属性设置为 true ,以便适配器可以在上一轮询周期结束后立即开始执行下一轮询周期。

.NET 类型:bool (System.Boolean)

UseAmbientTransaction

类别:交易
说明:指定 SQL 适配器是否使用调用方提供的事务上下文执行作。 默认值为 true,这意味着适配器始终在事务上下文中执行作。 如果存在参与事务的其他资源,并且 SQL Server 也加入事务,则事务会提升为 MSDTC 事务。

但是,在某些情况下,你不希望适配器在事务上下文中执行操作。 例如:

  • 在 SQL Server 数据库上执行简单的 Select 操作时
  • 在指定一条执行 Select操作的轮询语句时,不涉及通过 Delete语句或调用存储过程对表进行任何更改。

这两个操作都不会对数据库表进行任何更新,因此,将这些操作提升为使用 MSDTC 事务可能会造成性能开销。 在这种情况下,可以将绑定属性设置为 false ,以便 SQL 适配器不会在事务上下文中执行作。

注释

  • UseAmbientTransaction 设置为 False 时,不会调用 PolledDataAvailableStatement 。 相反,适配器直接调用 PollingStatement
  • 对于不对数据库进行更改的操作,建议不要在事务上下文中执行这些操作。 对于更新数据库中数据的作,建议将绑定属性设置为 true。 否则,您可能会遇到消息丢失或重复消息,具体取决于您是在执行入站操作还是出站操作。

.NET 类型:bool (System.Boolean)

如何设置 SQL Server 绑定属性?

指定与 SQL Server 的连接时,可以设置 SQL Server 绑定属性。 有关如何设置绑定属性的信息,请参阅:

另请参阅

开发 SQL 应用程序