用于 Oracle 数据库的 BizTalk 适配器中的主要功能

本部分列出了 Microsoft BizTalk Adapter for Oracle Database 中的新增功能和已弃用的功能。

功能 注释
连接到 Oracle 数据库的新方法 除了像以前版本的适配器) 一样,使用 tnsnames.ora 文件 (中的网络服务名称连接到 Oracle 数据库外,适配器客户端现在还可以通过指定连接参数直接连接到 Oracle 数据库,从而无需使用网络服务名称或 tnsnames.ora 文件。 在环境中添加或更新 Oracle 服务器时,无需使用 tnsnames.ora 文件连接到 Oracle 数据库,就无需手动更新连接参数 (net service name) 每台客户端计算机上的 tnsnames.ora 文件中。 有关详细信息,请参阅 创建与 Oracle 数据库的连接
支持 Windows 身份验证 适配器客户端可以使用 Windows 身份验证连接到 Oracle 数据库。 Windows 身份验证使你能够基于 Windows 登录凭据确定用户的标识,从而帮助你利用 Windows 环境的内置安全性。 有关 Oracle 数据库适配器中的 Windows 身份验证的详细信息,请参阅 使用 Windows 身份验证连接到 Oracle 数据库
功能 注释
支持在 Insert 操作中指定内联值 可以使用 Insert 操作中的 InlineValue 属性将计算值插入到 Oracle 数据库中的表或视图中。 这是一个可选属性,可用于多记录插入操作中的所有简单数据记录。 如果为此属性指定值,它将替代记录的指定值。 有关 InlineValue 属性的详细信息,请参阅 对 Oracle 表和视图执行插入、更新、删除和选择操作
增强的轮询 Oracle 数据库适配器现在支持使用存储过程、函数或打包过程或函数定期轮询 Oracle 数据库,从而接收“基于轮询”的数据更改消息。 除了 SELECT 语句之外,现在还可以将存储过程、函数或打包过程或函数指定为轮询语句,适配器会定期执行该语句来轮询 Oracle 数据库。 有关轮询的详细信息,请参阅 支持接收基于轮询的数据更改消息
支持 Oracle User-Defined 类型 (UDT) Oracle 数据库适配器支持对包含 Oracle UDT 的 Oracle 数据库中的项目执行操作。 有关 UDT 支持的信息,请参阅 支持 Oracle 数据库中的 Oracle User-Defined 类型
支持复合操作 Oracle 数据库适配器使适配器客户端能够对 Oracle 数据库执行复合操作。 复合操作可以包括任意数量的以下操作,并且可以按任意顺序进行:

- 对表和视图的操作。
- 在适配器中显示为操作的包中的存储过程、函数和过程或函数。

有关复合操作的详细信息,请参阅 复合操作的消息架构
支持在非用户拥有的架构中执行存储过程 Oracle 数据库适配器允许在架构中执行存储过程,即使当前用户不是架构的所有者,前提是用户对 Oracle 中的架构具有权限。 但是,如果存储过程使用 RECORD 类型,则必须在与存储过程相同的架构中定义它们。 有关使用 Oracle 数据库适配器执行存储过程的信息,请参阅 对函数和存储过程的操作
支持数据库更改通知 适配器客户端可以根据触发的 SELECT 语句从 Oracle 数据库接收数据库更改通知。 当 SELECT 语句的结果集发生更改时,Oracle 数据库会将通知发送到适配器客户端。 有关数据库更改通知的详细信息,请参阅 接收数据库更改通知的注意事项
支持同义词 适配器客户端可以对为表、视图、存储过程、函数和包创建的同义词执行操作。 有关同义词以及如何使用 Oracle 数据库适配器对同义词执行操作的信息,请参阅 Oracle 数据库中同义词的操作
支持布尔参数和 PL/SQL 表类型 适配器客户端可以在包含布尔参数和 PL/SQL 表类型的存储过程和函数中执行操作。

其他功能

功能 注释
在 BizTalk Server 中使用适配器的新方法 Oracle 数据库适配器可以在 BizTalk 中用作 WCF-Custom 端口或 WCF-OracleDB 端口。 如果要通过 WCF-Custom 端口使用 Oracle 数据库适配器,则无需将 WCF-Custom 端口添加到 BizTalk Server 管理控制台,因为默认情况下,WCF-Custom 端口已添加到 BizTalk Server 管理控制台。 但是,如果要通过 WCF-OracleDB 端口使用 Oracle 数据库适配器,必须先将 WCF-OracleDB 适配器添加到 BizTalk Server 管理控制台。 有关详细信息,请参阅将 Oracle 数据库适配器添加到 BizTalk Server 管理控制台

Oracle 适配器中已弃用的功能

下表列出了当前版本的 Oracle 数据库适配器中已弃用的功能。

功能 注释
绑定属性 PollingRetryCountTransactionIsolationLevelLongDataTypeColumnSize 绑定属性已弃用。

注意 若要为入站操作设置事务隔离级别,必须在配置接收端口时添加服务行为来设置适当的值。 有关如何设置事务隔离级别的说明,请参阅 配置事务隔离级别和事务超时

要注意的更改

常规

  • 对于类型为 IN OUT REF CURSOR 的参数

    • 如果存储过程内的 REF CURSOR 值没有更改,则输出的值与输入 REF CURSOR 中的值相同。

    • REF CURSOR 中的输入和输出数据属于同一类型。

  • “nil”属性的错误行为:对于所有简单数据类型,如果将 nil 属性的值设置为“true”,并且存在字段或参数的值,则 Oracle 数据库适配器错误地传递指定的值而不是 NULL。 作为解决方法,如果要为字段或参数传递 NULL 值,必须确保未指定字段或参数的值。 例如,为名为“name”的字段传递 NULL 值:

    <name xsi:nil="true"/>  
    
  • Select 操作的结果集中的值末尾的 Real、Float 和 Long 数据类型以及 (0) 的额外零不会被截断。 此外,对于 Real、Float 和 Long 数据类型,Select 操作的结果集始终返回精度为 8 的值。

  • RECORD 类型的数据处理:为这些节点传递的值取决于 SkipNilNodes 绑定属性的值。 有关此绑定属性的详细信息,请参阅 配置 Oracle 数据库的绑定属性

  • 出站操作:对于没有在输入 XML 文件中指定的值的参数,不会发送任何值。 如果在存储过程中指定了默认值,则 Oracle 数据库将使用该值,因为适配器未发送任何值。 如果需要发送 NULL 值,用户需要通过将“nil”属性的值设置为“true”,在输入 XML 文件中指定 NULL 节点。

  • 支持命令超时。

  • UpdateLOB 操作必须作为事务的一部分执行。 为了确保这一点, UseAmbientTransaction 绑定属性的值必须设置为 True

BizTalk 方案

  • 出站操作:如果 UseAmbientTransaction 绑定属性为“True”,则会在同一分布式事务中对 Oracle 数据库和 BizTalk MessageBox 数据库执行操作。 有关 Oracle 数据库适配器中事务的详细信息,请参阅 使用 Oracle 数据库适配器处理事务

  • 入站操作:对于使用 Oracle 数据库适配器的入站操作,不能在 BizTalk Server 中使用 Request-Response 接收端口。 只能使用 One-Way 接收端口。

其他方案

  • 出站操作:适配器不启动事务。 如果用户希望在同一事务中插入多行,则用户负责在 System.Transactions 事务范围内执行操作。 用户还需要将 UseAmbientTransaction 属性的值设置为 True。 有关 Oracle 数据库适配器中事务的详细信息,请参阅 使用 Oracle 数据库适配器处理事务

  • 出站操作:对同一 IRequestChannel/proxy 对象执行的 Sll 操作可能不会在与 Oracle 数据库建立的同一物理连接上执行。

  • WCF 通道模型:使用 WCF 通道模型时,Oracle 数据库适配器不支持 IReplyChannel。 但是,可以使用 IInputChannel 执行入站操作。 此外,在事务方面,适配器依赖于 WCF 调度程序发起的事务来针对 Oracle 数据库执行轮询语句和后轮询语句。 可以通过在 ServiceBehavior 中设置适当的值来控制 WCF 调度程序发起的事务的事务隔离级别和超时。

另请参阅

了解适用于 Oracle 数据库的 Biztalk 适配器