阅读适用于 SQL Server 适配器绑定属性的 BizTalk 适配器

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

适配器绑定属性

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

XmlStoredProcedureRootNodeName

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

重要

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

.NET 类型:字符串

XmlStoredProcedureRootNodeNamespace

类别: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.64700000 (24 天) 。 使用具有BizTalk Server的适配器时,将超时设置为较大值不会影响适配器的功能。

.NET 类型:System.TimeSpan

SendTimeout

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

EnableBizTalkCompatibilityMode

类别: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)

BatchSize

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

ChunkSize

类别:缓冲
说明:指定用于设置<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 关键字 (keyword) 。 有关详细信息,请参阅 SqlConnection.ConnectionString 属性
.NET 类型:字符串

EnablePerformanceCounters

类别:诊断
说明:指定是否启用 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 类型:枚举

AllowIdentityInsert

类别: 杂项
说明:指定适配器是否可以在“插入”和“更新”操作期间插入标识列的值。 将此属性设置为 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)

NotificationStatement

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

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

注意

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

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

.NET 类型:字符串

NotifyOnListenerStart

类别:通知 (入站)
说明:指定适配器是否在侦听器启动时向适配器客户端发送通知消息,通知接收位置正在运行。 默认值为 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)

PolledDataAvailableStatement

类别:轮询 (入站)
说明:指定为确定是否有任何数据可用于轮询SQL Server数据库中特定表而执行的 SQL 语句。 指定的语句必须返回由行和列组成的结果集。 结果集第一个单元格中的值指示适配器是否执行为 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 类型:字符串

PollingIntervalInSeconds

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

PollingStatement

类别:轮询 (入站)
说明:指定要轮询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 应用程序